1

我正在尝试将字符串中单词的每个实例加粗,并在单词的第一个实例之前删除字符串中的所有内容。

我正在使用str_replace()stristr()执行此操作,但输出不如预期。单词第一个实例之前的所有内容都被切断,但是当我回显字符串时,该单词的实例不是粗体。

这是我的代码:

$word="the";
$sentence = "Hello, did you hear the quick brown fox jumped over the lazy dog";
$edited = stristr((str_replace($word, ("<span class=\"found\">".$word."</span>"), ($sentence))), $word);
echo $edited;

以及该类的 CSS 使其变为粗体:

.found{
    font-weight:bold;
    font-weight:700;
}

我想要的是这样的:

敏捷的棕色狐狸跳过了懒惰的

或者

<span class="found">the</span> quick brown fox jumped over <span class="found">the</span> lazy dog 

回响时。

但我得到的是:

敏捷的棕色狐狸跳过了懒惰的狗

或者

the quick brown fox jumped over the lazy dog

回响时。

我究竟做错了什么?

4

1 回答 1

3
$edited = stristr($sentence, $word);
$edited = str_ireplace($word, '<span class="found">'.$word.'</span>', $edited);

演示


或者更好(保留原来的大小写,只加粗整个$words):

$edited = stristr($sentence, $word);
$edited = preg_replace('~\b(' . preg_quote($word, '~') . ')\b~i', '<span class="found">$1</span>', $edited);

另一个演示

于 2013-05-31T00:01:10.790 回答