我怎麼能拒絕這樣的:刪除每個<br />,每行除外?
...<br />
<br />
...<br />
...<br />
<br />
<br />
...<br />
進入這個使用PHP:
...<br />
...<br />
...<br />
...
請注意第一個和最後一個
的缺失,即使它提到一次。在中間,我們只保留一個
我怎麼能拒絕這樣的:刪除每個<br />,每行除外?
...<br />
<br />
...<br />
...<br />
<br />
<br />
...<br />
進入這個使用PHP:
...<br />
...<br />
...<br />
...
請注意第一個和最後一個
的缺失,即使它提到一次。在中間,我們只保留一個
preg_replace('#<br />(\s*<br />)+#', '<br />', $your_string);
這將替換多個<br />
的情況下,任選空格把它們分開,用一個單一的<br />
。
請注意模式中的<br />
完全匹配。如果您想要更具防禦性,則可以將其更改爲<br[^>]*>
,這將允許<br>
具有屬性的標籤(即<br style="clear: both;" />
)或不具有結尾斜槓。
首先,你應該編輯你的問題,因爲第一個<br />
沒有出現。
然後更換所有重複<br />
和第一個和最後一個,你可以這樣做:
$str = <<<EOD
<br />
...<br />
<br />
...<br />
...<br />
<br />
<br />
...<br />
EOD;
$str = preg_replace('~(^<br />\s*)|((?<=<br />)\s*<br />)|(<br />\s*$)~', '', $str);
echo "===\n",$str,"\n===\n";
這將輸出:
===
...<br />
...<br />
...<br />
...
===
[朋友不會讓朋友們解析HTML定期表達式。](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – Ether 2010-09-22 21:46:43
@Ether雖然我一般同意,這不是'真的解析HTML,只是擠壓重複的字符串。 – 2010-09-22 21:48:12
@Daniel:從未見過'
'例如?
可以擁有各種各樣的屬性。 – Wrikken 2010-09-22 22:12:19