我有一個像下面這樣的字符串。如何使用preg-match將html標籤替換爲其他標籤?
<label>value1<label>:value<br>
<label>value2<label>:value<br>
<label>value3<label>:value<br>
,我需要這個安排如下
<li><label>value1<label><span>value</span><li>
我已經嘗試了這最後2天,但沒有luck.Any幫助?
我有一個像下面這樣的字符串。如何使用preg-match將html標籤替換爲其他標籤?
<label>value1<label>:value<br>
<label>value2<label>:value<br>
<label>value3<label>:value<br>
,我需要這個安排如下
<li><label>value1<label><span>value</span><li>
我已經嘗試了這最後2天,但沒有luck.Any幫助?
這真的不是你應該用正則表達式做的事情。如果解決方案對解析的內容做了大量假設,您可能可以將這些解決方案融合在一起,但如果內容偏離預期的任何重要程度,它總是會變得脆弱並易於中斷。
更好的選擇是使用PHP的DOM family類。我沒有真正的自由爲你編寫代碼(而且這也不是什麼問題),但是我可以給你一個關於你需要遵循的步驟的指針。
我已經修復了它。 – GordonM
如果,正則表達式的緣故,你應該使用它然後按照如下:
$string = <<<TOK
<label>value1<label>:value<br>
<label>value2<label>:value<br>
<label>value3<label>:value<br>
TOK;
preg_match_all('/<label>(.*?)<label>\:(.*?)<br>/s', $string, $matches);
print_r($matches);
/*
Array
(
[0] => Array
(
[0] => value1:value
[1] => value2:value
[2] => value3:value
)
[1] => Array
(
[0] => value1
[1] => value2
[2] => value3
)
[2] => Array
(
[0] => value
[1] => value
[2] => value
)
)
*/
$content = "";
foreach($matches as $key => $match)
{
$content.= "<li><label>{$matches[1][$key]}<label><span>{$matches[2][$key]}</span><li>\n";
}
echo($content);
/*
Output:
<li><label>value1<label><span>value</span><li>
<li><label>value2<label><span>value</span><li>
<li><label>value3<label><span>value</span><li>
*/
色素沉着的比賽?基於顏色匹配? – 2012-11-19 09:15:51
對不起兄弟。拼寫錯誤。 – user1835277
你不能用正則表達式解析HTML。 http://stackoverflow.com/a/1732454/477127 – GordonM