0

我是 preg 的新手,想在数组中找到一些字符串并强调每个字符串。

例如。

  array[0] = "windows";
  array[0] = "windows xp";

  text will be: <em>windows</em> is bla bla...<em>windows xp</em> is bla bla

我怎么能这样做?

4

3 回答 3

3

非常简单的替换,不需要preg_*:

$mytest = "Windows XP was all right, but I like Windows 7 better!°";
$replacement = "Windows XP";
echo str_replace($replacement, "<em>".$replacement."</em>", $mytest);

您还可以替换数组。[手动输入][1]

于 2009-12-29T01:05:20.960 回答
1

如果您正在对文本进行搜索和替换,这很容易:

$text = 'windows xp';
$input = '....';
$output = str_replace($text, '<em>' . $text . '</em>', $input);

如果您有一个 HTML 块存储为字符串,则需要考虑另一个问题:如果用户搜索的文本是标记或属性名称或值的一部分怎么办?如果你想突出“强”,你不想替换它:

<strong>some text</strong>

和:

<<em>strong</em>>some text</<em>strong</em>>

因为您的标记将不再有效。

这就是在标记上使用简单的搜索和替换或正则表达式的问题。处理此问题的最佳方法是将标记转换为 DOM 树,然后在文本节点上对其进行替换。即使这样也有问题。如果要突出显示“windows xp”,是否要突出显示这种情况:

windows <i>xp</i>

对于用户来说,它显示为“windows xp”,因此可以合理地假设用户想要突出显示它。

于 2009-12-29T01:14:47.557 回答
0
$string = preg_replace("(windows( xp)?)", "<em>$0</em>", $string)
于 2009-12-29T01:16:49.923 回答