我是 preg 的新手,想在数组中找到一些字符串并强调每个字符串。
例如。
array[0] = "windows";
array[0] = "windows xp";
text will be: <em>windows</em> is bla bla...<em>windows xp</em> is bla bla
我怎么能这样做?
非常简单的替换,不需要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]
如果您正在对文本进行搜索和替换,这很容易:
$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”,因此可以合理地假设用户想要突出显示它。
$string = preg_replace("(windows( xp)?)", "<em>$0</em>", $string)