在php中操作HTML段落


Manipulate HTML paragraphs in php

可能重复:
突出显示段落中的关键字

这是另一个问题。我在php中遇到了一个小问题,我想在自己找到一个特别普通的解决方案之前,也许有一种更简单、更快的方法来解决这个问题。

假设我有一个字符串,其中包含HTML段落标记,如:

$string="<p>Hello this is nick</p>
         <p>i need some help over here</p>
         <p></p><p>Does anyone know a solution</p>"

还有一系列包含一些"线索"单词的刺痛:

$array=("Hello","nick", "help", "anyone", "solution")

我现在想做以下事情:在浏览器中输出$string,但"线索"单词应具有特殊格式,例如粗体或高亮显示。

让我觉得这有点困难的是,我想保持段落的原样。换言之,我希望最终输出与原始输出完全一样(包括新行/新段落),但带有一些粗体

我想我可以使用strip_tag来删除<p></p>标记,然后用空格分割返回的字符串。以便得到一组单词。然后,我将通过检查该单词是否包含在$array中来单独输出该单词。如果是,那么它将以粗体样式输出。

这样一来,我显然失去了新段落的概念,所有段落都将合并为一个段落。

有什么简单的方法可以解决这个问题吗?例如,一种了解单词"Hello"在新段落中开始的方式?或者我还能做些什么吗?

只需将单词替换为其自身的格式化版本。下面的正则表达式保留大小写并只替换完整的单词(例如,在单词"snicker"中,它内部的单词"nick"不会被替换)。

preg_replace( '/'b('.implode( '|', $array ).')'b/i', '<em>$1</em>', $string );

为什么不直接替换提示词?

$string = str_ireplace(array('hello', 'nick'), array('<strong>hello</strong>', '<strong>nick</strong>'), $string);

(当然,传递给函数的第二个数组将预先生成)

使用str_replace并用粗体标记替换单词