我是preg的新手,想要找到我在数组中得到的一些字符串并强调每一个字符串。
例如
array[0] = "windows";
array[0] = "windows xp";
text will be: <em>windows</em> is bla bla...<em>windows xp</em> is bla bla
我怎么能这样做?
答案 0 :(得分: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]
答案 1 :(得分: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”,因此假设用户想要突出显示它是合理的。
答案 2 :(得分:0)
$string = preg_replace("(windows( xp)?)", "<em>$0</em>", $string)