【发布时间】:2014-02-07 20:42:01
【问题描述】:
今天我得到了一些很大的帮助,开始了解具有已知值的 preg_replace_callback。但现在我想处理未知值。
$string = '<p id="keepthis"> text</p><div id="foo">text</div><div id="bar">more text</div><a id="red"href="page6.php">Page 6</a><a id="green"href="page7.php">Page 7</a>';
以它作为我的字符串,我将如何使用 preg_replace_callback 从 div 和 a 标签中删除所有 id,但为 p 标签保留 id?
所以从我的字符串
<p id="keepthis"> text</p>
<div id="foo">text</div>
<div id="bar">more text</div>
<a id="red"href="page6.php">Page 6</a>
<a id="green"href="page7.php">Page 7</a>
到
<p id="keepthis"> text</p>
<div>text</div>
<div>more text</div>
<a href="page6.php">Page 6</a>
<a href="page7.php">Page 7</a>
【问题讨论】:
-
“我将如何使用 preg_replace_callback 到 [...]” - 理想情况下,you wouldn’t ...
-
所以在这种情况下我应该坚持使用 preg_replace 或 str_replace 吗?
-
如果你不知道 $string 的未来,最好使用 HTML 解析器
-
A quick fiddle,发布一个广泛的答案很累,所以我放了一些 cmets。将
preg_replace()与x修饰符一起使用并删除g修饰符。一些建议:1) 如果你不确定你得到的输入或者你的正则表达式技能不好,那么就使用a parser 2) 这个问题得到了相当多的支持,我不明白为什么,但你真的应该发布你的尝试 3) Learn regex 或访问 regex chatroom !