使用preg_replace替换错误的html实体

时间:2016-05-06 09:26:25

标签: php regex

不幸的是,我必须在文本中处理错误的HTML实体,例如

  

&安培; middot,

而不是带有分号结尾的正确实体。

我试过

$pattern = "/^&[a-zA-Z]+?,/";
$replace =  "/^&[a-zA-Z]+?;/";
$detailtext = preg_replace($pattern,$replace, $detailtext);

但它不起作用......这让我疯狂,我对正则表达式不熟悉,任何帮助都将不胜感激!

$detailtext的示例:

$detailtext = "Unterputz-Einsätze<br>mit Federklemmen (Verbindungsklemmen nach VDE 0632). <br>Die Einsätze können wahlweise mit Standard- oder Flächenabdeckung <br>bestückt werden.<br>Wippschalter<br>10 AX 250 V&sim,<br>Ausführung: Universalschalter (Aus-Wechsel)<br>"

2 个答案:

答案 0 :(得分:2)

你应该试试这个:

$pattern ="/(&[a-zA-Z]+),/"
$replace ="$1;";
$detailtext = preg_replace($pattern,$replace, $detailtext);

括号将捕获后跟“,”的实体,您可以使用“$ n”检索它们,n是捕获组编号。所以用“$ 1”替换后跟分号结束。

答案 1 :(得分:0)

试试这个:

$str = preg_replace("/(\&.*)(\,)/", "$1;", $str);