1

我需要用锚标记替换所有关键字。但如果它在标题、元、粗体、强等标签内,请不要替换它。

$keyword = "test";
 $pattern = "/".$keyword."(?!([^<]+)?>)/";
 $replacement  = "<a  style='color:red;'>".$keyword."</a>";         
 $text     = preg_replace( $pattern, $replacement, $text );  
 echo $text;

它正在替换所有单词。例如:标题标签带有“标题测试标题”。如果它带有上述文本,请不要替换它。是否可以创建一个数组模式来检查关键字是否在 html 标记内,如果是则不要替换它。任何人都可以帮助我。如果还有其他选择,请给我。谢谢,迪克森。

4

1 回答 1

2

是的。你可以这样做:

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。

于 2013-06-11T04:49:54.633 回答