[英]PHP replace string using overlapping regular expressions
你好! 我試圖將html標簽添加到字符串中。 我使用函數preg_replace(),但當我的數組中的模式重疊時,preg_replace不起作用。
$string = 'abc';
$patterns[0] = '/a/';
$patterns[1] = '/abc/';
$replacements[0] = '<b>$0</b>';
$replacements[1] = '<i>$0</i>';
echo preg_replace($patterns, $replacements, $string);
這產生以下輸出:
<b>a</b>bc
但我期待這個輸出:
<b><i>a</b>bc</i>
似乎preg_replace采用第一個模式並用第一個替換替換它,然后搜索第二個模式,但它搜索修改后的字符串。 我必須使用支持正則表達式的函數。
這是因為它們不是同時運行,而是循環運行。 在第一次表達之后,你最終會得到<b>a</b>bc
因此第二個表達式不再有任何abc
匹配。
就是這樣。 這很好,因為謝謝你 不會以無效標記結束 。 你會。 正則表達式是HTML或XML的嚴重問題。
使用一些DOM解釋器和庫,比如PHP的DOMDocument
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.