PHP通过html标签爆炸字符串

时间:2011-09-22 05:00:17

标签: php string

假设字符串$ a成立

<p>Phasellus blandit enim eget odio euismod eu dictum quam scelerisque.
</p><p>Sed ut diam nisi.</p><p>Ut vestibulum volutpat luctus.</p>

如何将其分解为此数组

Array(
    [0] = '<p>Phasellus blandit enim eget odio euismod eu dictum quam scelerisque.</p>';
    [1] = '<p>Sed ut diam nisi. Ut vestibulum volutpat luctus.</p>';
    [2] = '<p>Ut vestibulum volutpat luctus.</p>';
)

2 个答案:

答案 0 :(得分:5)

<?php
$ps    = array();
$count = preg_match_all('/<p[^>]*>(.*?)<\/p>/is', $a, $matches);
for ($i = 0; $i < $count; ++$i) {
    $ps[] = $matches[0][$i];
}

这可能是一种方式。或者您可以使用strpos

的循环

答案 1 :(得分:5)

使用DOMDocument和DOMXPath(如果只需要一个简单的解决方案,则有点过分):

$dom = new DOMDocument();
$dom->loadHTML($a);
$domx = new DOMXPath($dom);
$entries = $domx->evaluate("//p");
$arr = array();
foreach ($entries as $entry) {
    $arr[] = '<' . $entry->tagName . '>' . $entry->nodeValue .  '</' . $entry->tagName . '>';
}
print_r($arr);