$test = "<div><b><i>#uniquetag#</b></i></div> <div>Keep this</div>";
$test = preg_replace("/<div(.*)#uniquetag#(.*)<\/div>/i", "#uniquetag#", $test);
我想要的結果是PHP的preg_replace - 正則表達式不包括短語
$test = "#uniquetag# <div>Keep this</div>";
但它返回
$test = "#uniquetag#";
我想我知道這是爲什麼。 (。*)是貪婪的,它將搜索擴展到結尾。但我無法弄清楚什麼是正確的做法。
更新:
特別感謝ghostdog74。老問題解決了。一個新的問題是經驗豐富....
$test = "<div></div> <div><b><i>#uniquetag#</b></i></div> <div>Keep this</div>";
$test = preg_replace("/<div(.*)#uniquetag#(.*?)<\/div>/i", "#uniquetag#", $test);
預期的結果是
$test = "<div></div> #uniquetag# <div>Keep this</div>";
但事實證明是
$test = "#uniquetag# <div>Keep this</div>";
同樣,我相信這是因爲第一(。 )。將其更改爲(.?)也無濟於事。需要想辦法排除。
它有效,但我面臨另一個問題。如果在此代碼之前有一個div標籤,它會吞噬它之前的所有div。 – 2010-02-01 08:47:03
在您的問題和您的預期輸出中顯示您的示例 – ghostdog74 2010-02-01 09:08:16