删除开始和结束
标签PHP
快速的问题:删除开始和结束<br>标签PHP
什么是去从$string
的开始和结束消除<br>
和<br />
标签的最佳方式?
我正在使用此代码,但似乎并没有删除只是<br>
标签。
$str = preg_replace('{^(<br(\s*/)?>|ANDnbsp;)+}i', '', $str);
$str = preg_replace('{(<br(\s*/)?>|ANDnbsp;)+$}i', '', $str);
编辑:附加信息
此代码是处理已经从一个古老的CMS导入的信息。
因此,我知道,我需要替换的唯一两个标签是<br>
和<br />
。此外,我只能在$string
的最开始和最末端替换这些标签,而不是在之间。
我不需要处理任何其他标签;格式不正确的HTML或其他属性。
本质上,我只想扩展我建议的代码,以便替换<br>
标签以及<br />
。
我很抱歉没有提供足够的信息开始。
在此先感谢,正则表达式的
一种可能是这样的:
"/(^)?(<br\s*\/?>\s*)+$/"
因此,让我们可以很清楚的:
$str = preg_replace("/(^)?(<br\s*\/?>\s*)+$/", "", $str);
解释:
- * - 匹配0次或更多次;
- \ s - 匹配任何空格字符;
- ? - 匹配0或1次;或者:最短匹配;
- ^- 仅匹配字符串的开头;
- $ - 只匹配字符串的末尾;
一个很好的起点:Regular expressions in Perl
你不可使用正则表达式来解析HTML。
如果你得到一个匹配<br />
和<br>
正则表达式,如果有人在style
,class
,或id
抛出,会发生什么?如果你这样写,那么如果他们输入一个标题呢?或者只是放入一些格式不正确的代码?
您应该使用像strip_tags()
here这样的功能。
或DOM解析器here。
您的DOM解析器如何处理格式错误或格式不正确的代码?可能比你的平均正则表达式差,我猜? strip_tags没有做他想做的事情,因为它删除*每个*标记,而不仅仅是行尾。 你不应该使用正则表达式来解析HTML,但请保持一点务实?有时候,不好的做法是最好的做法,盲目地高喊伪圣经线路不会帮助任何人。 – 2012-03-13 14:41:17
我很抱歉你一直是我的首选目标,但如果他们不知道所有症状,我会厌恶处方药。 – 2012-03-13 14:42:45
*“你的DOM解析器如何处理格式错误或格式不正确的代码?” - 比大多数正则表达式更好。 – Qtax 2012-03-13 14:50:04
你正在为我工作正常。 – Toto 2012-03-13 14:53:37