需要 preg_replace 方面的帮助
$text = '<p width="50px;" style="padding:0px;"><strong style="padding:0;margin:0;">hello</strong></p><table style="text-align:center"></table>';
$text_2 = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $text);
输出(我在这里给出了html格式):
<p>
<strong>hello</strong>
</p>
<table></table>
我的问题是所有属性都必须删除,但不是属于表的属性。也就是说,我期待的输出与下面完全相同(HTML FORMAT):
<p>
<strong>hello</strong>
</p>
<table style="text-align:center"></table>
我需要在上面的正则表达式中修改什么才能实现它。
任何帮助将不胜感激......
提前致谢...
$text = '<p width="50px;" style="padding:0px;"><strong style="padding:0;margin:0;">hello</strong></p><table style="text-align:center"></table>';
$text_2 = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $text);
OUTPUT(i have given the html format here):
<p>
<strong>hello</strong>
</p>
<table></table>
My problem is all attributes must be removed but not the attributes belongs to table. That is i am expecting the out put exactly like below(HTML FORMAT):
<p>
<strong>hello</strong>
</p>
<table style="text-align:center"></table>
What should i need to modify in the above regular expression to achieve it..
Any help will be thankful and grateful....
Thanks in advance...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您想避免使用正则表达式,因为您确实不应该使用正则表达式来处理 xml/html 结构,请尝试:
输出:
If you want to avoid using regex, because you really souldn't use regex to work on xml/html structures, try:
Output:
您与当前的 reg-ex 非常接近。您需要进行检查(在这种情况下认为这是负向预测?)
<(?!table)([az][a-z0-9]*)[^>]*? (\/?)>
reg-ex 的第一部分所做的是检查它是否不以 'table' 开头,那么它就是您的正则表达式。
You are very close with your current reg-ex. You need to do a check (think it is a negative look-ahead in this case?)
<(?!table)([a-z][a-z0-9]*)[^>]*?(\/?)>
What that first bit of reg-ex is doing is checking that it does not start with 'table', then it is your regex.
有点老套的解决方案,但有效。
尝试在代码中禁用 TABLE 标签一段时间,然后再次启用它们。
它会起作用的。
请参阅:http://codepad.org/nevLWMq8
Bit of hacky solution, but works .
Try disabling TABLE tags for a while in your code, and enable them again.
It would work.
see : http://codepad.org/nevLWMq8