[英]how do I use preg_replace_callback on unknown values?
今天我得到了一些很好的幫助,開始了解具有已知值的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和標簽中刪除所有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>
對於您的示例,以下應該工作:
$result = preg_replace('/(<(a|div)[^>]*\s+)id="[^"]*"\s*/', '\1', $string);
雖然通常你最好避免使用正則表達式解析HTML並使用適當的解析器(例如將HTML加載到DOMDocument並使用removeAttribute方法,就像在這個答案中一樣 )。 這樣您就可以更好地處理標記和格式錯誤的HTML的變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.