解析html并用锚标记替换单词


Parse html and replace words by anchor tag

我需要用锚标记替换所有关键字。但是,如果它位于标签(如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。