【问题标题】:PHP preg_replace ampersandPHP preg_replace & 符号
【发布时间】:2012-09-05 19:20:08
【问题描述】:

好吧,我可能不会以正确的方式解决这个问题,但这里是..

我有这个字符串,它带有一个链接并提取标签之间的文本......

$string = $item;
$pattern = '/\<a([^>]*)\>([^<]*)\<\/a\>/i';
$replacement = '$2';
$message = preg_replace($pattern, $replacement, $string);

这个字符串中有几个项目有和号(在文本部分,而不是标签部分),但大多数没有。我正在尝试找出一种方法将 & 符号合并到当前模式中,或者在标签被剥离后在 $message 上执行另一个 preg_replace 以删除 & 符号。

谢谢!

【问题讨论】:

  • 如果你正在考虑多个正则表达式,你要么过于复杂,要么你是Cthulu的奴隶......真的:省去很多麻烦和PARSE html。正如你自己所说:你的方法不对,所以改正

标签: php regex preg-replace


【解决方案1】:

总是有$message = str_replace('&amp;', '', $message);

顺便说一句,如果你想从 html 输入中去除标签,还有strip_tags

例如,如果您的输入是

$text = '<a href="google.com">Text</a>';

然后strip_tags($text) 将产生Text

【讨论】:

  • 感谢您的回答,这很有效!我选择了另一个答案,因为它更干净一些。但下次我会记住strip_tags($text)!谢谢!
【解决方案2】:

您想删除 & 符号后面的所有内容吗?然后是

'/\<a([^>]*)\>([^<&]*)[^<]*\<\/a\>/i';

否则,您需要进行第二次手术。

顺便说一句:您的正则表达式还将匹配以&lt;a 开头的其他标记,例如&lt;author&gt;&lt;audio&gt; 标记。

【讨论】:

  • 谢谢,效果很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多