這是一些代碼正則表達式搜索和替換
<br /> <br /> <br /> <br /> <br /> <br />
但
我想更換
<br /> fourth with <hr />
而這種輸出
<br /> <br /> <br /> <hr /> <br /> <br />
請幫我
這是一些代碼正則表達式搜索和替換
<br /> <br /> <br /> <br /> <br /> <br />
但
我想更換
<br /> fourth with <hr />
而這種輸出
<br /> <br /> <br /> <hr /> <br /> <br />
請幫我
也許這樣的事情是你想要什麼:
<?php
$text = <<<EOT
<br /> 1 <br /> 2 <br /> 3 <br /> 4 <br /> 5 <br /> 6
<br /> 7 <br /> 8 <br /> 9 <br /> 10 <br /> 11 <br /> 12
<br /> 13 <br /> 14 <br /> 15 <br /> 16 <br /> 17 <br /> 18
EOT;
$tag = '<br \\/>';
$content = '[^<]*';
print preg_replace("/($content(?:$tag$content){3})$tag/", '$1<BREAK! />', $text);
?>
<br /> 1 <br /> 2 <br /> 3 <BREAK! /> 4 <br /> 5 <br /> 6
<br /> 7 <BREAK! /> 8 <br /> 9 <br /> 10 <br /> 11 <BREAK! /> 12
<br /> 13 <br /> 14 <br /> 15 <BREAK! /> 16 <br /> 17 <br /> 18
也就是說,這是一個痛苦,你真的不應該使用正則表達式。
如果你只想做一個替換,您可以將limit
參數設置爲preg_replace
:
preg_replace("/($content(?:$tag$content){3})$tag/", '$1<BREAK! />', $text, 1);
^^limit
感謝您的回覆 但我想只替換一個位置。 – Thoman 2010-06-02 10:58:53
@Thoman:'preg_replace'有一個'limit'參數;只需將其設置爲「1」(http://ideone.com/HKpjj) – polygenelubricants 2010-06-02 11:03:19
非常感謝您的幫助 – Thoman 2010-06-02 11:07:20
這種方法僅對於給定的情況下:
preg_replace("#<br /> 4#", "<hr /> 4", $str);
如果你正在尋找一個通用的解決方案,RegEx is not the best tool了點。使用HTML/XML解析器。
你好,我已經編輯我的代碼 – Thoman 2010-06-02 10:44:08
沒有必要使用正則表達式。
echo str_replace(' <br /> 4', ' <hr /> 4', $str);
你的問題是難以理解的,請解釋一下你想要做什麼。並顯示你到目前爲止。 – SilentGhost 2010-06-02 10:39:04
我想在不同的位置替換相似的主題短語 – Thoman 2010-06-02 10:48:57
正如Amarghosh在下面所說的,最好的辦法是使用HTML/DOM解析器而不是正則表達式。 – richsage 2010-06-02 11:01:25