我有一个如下字符串。
<label>value1<label>:value<br>
<label>value2<label>:value<br>
<label>value3<label>:value<br>
我需要安排如下
<li><label>value1<label><span>value</span><li>
我过去2天试过了,但没有运气。有什么帮助吗?
答案 0 :(得分:0)
这真的不是你应该用正则表达式做的事情。您可能能够将一个有效的解决方案融合在一起,前提是它对其解析的内容做了大量假设,但如果内容偏离预期的任何重要程度,它将始终是脆弱的并且容易破解。
更好的选择是使用PHP的DOM family类。我并不是真的可以自由地为你编写代码(而且这不是什么原因),但我可以给你一个关于你需要遵循的步骤的指针。
答案 1 :(得分:0)
如果为了正则表达式,您应该使用它,请按照以下步骤操作:
$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>
*/