php – 删除属性内的标签
我有这个传递给Text_Diff的字符串…
<?php $left_string = '<div class="class1" style="display:block;">Some Text<del> Orig</del></div>'; $right_string = '<div class="class1" style="<ins>color:#FFF;</ins>;display:block;">Some Text</div>'; 只有两个可能的标签:del和ins.如果它们不在标签内,我不会删除这些标签.但是当它们属于内部属性时需要删除它们. 解决方法
您可以使用以下正则表达式来使用搜索:
(?<=style=)([wW]+)(?:<ins>|<del>)([wWs]+)(?:</ins>|</del>)([wW]*)(?=">) 属性的值是与后向链接匹配的文本: ([wW]+) == $1 ([wWs]+) == $2 ([wW]*) == $3 然后,此组合将为您提供属性所需的值: $1$2$3 对于此输入字符串: <div class="class1" style="display:block;">Some Text<del> Orig</del></div> 你会得到结果: < div class =“class1”style =“display:block;”> Some Text< del>原稿< /德尔>< / DIV> 对于此输入字符串: < div class =“class1”style =“< ins> color:#FFF;< / ins> ;; display:block;”> Some Text< / div> 你会得到结果: < div class =“class1”style =“color:#FFF ;; display:block;”> Some Text< / div> 对于此输入字符串: < div class =“class1”style =“; display:block;< ins> color:#FFF;< / ins>”> Some Text< / div> 你会得到结果: < div class =“class1”style =“; display:block; color:#FFF;”> Some Text< / div> 请参见此处的演示:https://regex101.com/r/3XKv5s/1 对于任何属性,不仅是样式: (?<=[a-zA-Z]=")([wW]*)(?:<ins>|<del>)([wWs]*)(?:</ins>|</del>)([wW]*)(?=">) 请参见此处的演示:https://regex101.com/r/3XKv5s/2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |