我有一个像下面这样的字符串。如何使用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