用HTML内容动态填充数组而不剥离标签


dynamically populating array with html content without stripping tags

我有一些HTML内容。

<p>Ask a question</p><p>Wait for an answer</p><p>Vote up an Answer</p>

我想使用php分别输入每个段落/div或任何其他html元素作为数组的元素

$arr[0]="<p>Ask a question</p>";
$arr[1]="<p>Wait for an answer</p>";

我想动态地完成上面的任务

有很多方法。我的第一种方法是使用preg_match_all():

假设你的html在$html:

preg_match_all( '|<p>.+?</p>|si', $html, $matches );

$matches将是一个包含1个元素x N个元素的数组的数组,其中N是匹配的个数。

$matches[0][0] == '<p>Ask a question</p>';
$matches[0][1] == '<p>Wait for an answer</p>';
...

Edit:这可以推广到匹配其他标记,但是在复杂性要求超过正则表达式解析能力之后,应该使用DOM解析器。

如果您想匹配一组固定的不可嵌套标记,这种方法可以工作,但是如果所需的标记是可嵌套的或自闭的,那么正则表达式就不是方法,使用简单的DOM解析器将是正确的解决方案。