【发布时间】:2021-03-02 06:33:28
【问题描述】:
我正在从 MySQL 数据库中检索一些数据。为了突出显示,我想使用 PHP 修改显示的数据。添加了一个跨度类,它将应用一些文本着色和字母间距。我的数据存储在$example。
到目前为止,这是我的 PHP 代码,$kw 是包含要替换的字符串的变量:
$kw = "Fun:"
if(strpos($example,$kw)) {
$example = str_replace($kw,"<span class='new'>Fun:</span>",$example);
}
这适用于$example = "text text; Fun: text";。至于$example = "Fun: text"; 之类的东西,“Fun:”没有按预期替换,str_replace 没有应用。从字面上看,什么都没有发生。
当我尝试替换 $kw = "un:"; 时,它工作正常,除了 "Fun:" 中的 "F" 现在缺少突出显示。
因此,如果要替换的文本位于搜索字符串的开头,则不会发生任何事情。似乎 str_replace 开始查看字符串的第二个字符而不是开头。我不知道为什么。
我检查了存储查询结果的数组,但没有发现可以帮助我解决此问题的提示。我还为这两种情况打印了 strpos 的结果。对于第一个示例,我得到一个整数 > 0,对于第二个示例,结果为 0。这似乎很好,因为在示例 1 中 $kw 位于其他文本之间,而在示例 2 中它位于行。
有没有人遇到过这个问题,还是我太盲目了,看不到这里的解决方案?
【问题讨论】:
-
尝试将
if(strpos($example,$kw))更改为if(strpos($example,$kw) !== false)。如果您要查找的字符串是第一件事,stpost将返回0(其计算结果为false)。您可以在the manual 的“返回值”下阅读更多关于它返回的内容
标签: php str-replace