我需要用锚标记替换所有关键字。但是,如果它位于标签(如title,meta,bold,strong等)内,则不要替换它。
$keyword = "test";
$pattern = "/".$keyword."(?!([^<]+)?>)/";
$replacement = "<a style='color:red;'>".$keyword."</a>";
$text = preg_replace( $pattern, $replacement, $text );
echo $text;
它正在替换所有的单词。例如:title标签带有"title test title"。如果它与上面的文本一样,不要替换它。是否有可能创建一个数组模式来检查关键字是否在html标签内,如果是,那么不要替换它。有人能帮我吗?如果有其他选择,请告诉我。谢谢,迪克森。
是。你可以这样做:
str_replace(
array("meta", "title", "head"),
array("<a style='color:red;'>meta</a>", "<a style='color:red;'>title</a>", "<a style='color:red;'>head</a>"),
$string
);
如果关键字很少,这是最简单的方法之一。您不需要DOM Parser或Regex。