PHP RegEx 扩展 - 如何仅删除 url=*?
题
我编写了一个正则表达式来去除 BBCode 标签 - 它只是去除允许的标签(以便稍后计算没有标签的字符串长度)。
我不是正则表达式方面的专家 - 所以一个小时后我发现这非常有效:
$pattern = "/\[\/?(i|b|u|url(.*?)|list|li)[\]\[]*\]/i";
$stripped = preg_replace($pattern, '', $text);
它只删除允许的六个标签(没有更多 - 这是应该的)和特殊标签“url”,可以像“url=”一样扩展http://someurl'.
IE。
in: [url=someurl]Lorem[/url] ipsum [test]dolor[/test] sit [b]amet[/b].
out: Lorem ipsum [test]dolor[/test] sit amet.
但问题是,它不仅删除了“url=[sometext]”,还删除了“urlipsum”。我尝试添加一个“=”进行解析,但无法达到目的。
有人提示我如何仅在带有 = 的情况下删除 url 吗?
解决方案
尝试:
$pattern = '/\[\/?(i|b|u|url(=[^\]]+)?|list|li)[\]\[]*\]/i';
其他提示
$pattern = "/\[\/?(i|b|u|url=(.*?)|url(?=\])|list|li)[\]\[]*\]/i";
您可能想要更改量词的“贪婪”,尝试添加“U”模式修饰符或删除“.*?”中的问号,请参阅 PHP文档.
不隶属于 StackOverflow