指定格式的数组的段落

时间:2014-09-12 07:21:21

标签: php arrays domdocument

我正在使用这样的Html pragraph。

<p>This is the sample image</p><img src="test.png"/><p>this is thesample test</p>

我想把它转换成以下类型的数组

a[0] = This is the sample image;
a[1] = test.png
a[2] = >this is thesample test

如何用php做到这一点。任何人都可以给我建议。这里的示例html内容不仅仅是确切的内容。此内容可能有所不同,并且具有不同的html标记。如果img出现了,src应该以正确的顺序存储在数组和内容中。

2 个答案:

答案 0 :(得分:1)

使用preg_match匹配特定标记。

$source = "<p> text line </p>";

preg_match("'<p>(.*?)</p>'si", $source, $match);

var_dump($match);

你会得到文字。

并为所有人 -

preg_match_all("|<[^>]+>(.*)</[^>]+>|U", $source, $match, PREG_PATTERN_ORDER);

php manual for preg_match_all

答案 1 :(得分:0)

DOMDocument是的,你可以。获取nodeValueattributes的无效标记。例如:

$html_string = '<p>This is the sample image</p><img src="test.png"/><p>this is thesample test</p>';
$dom = new DOMDocument();
$dom->loadHTML($html_string);
$elements = $dom->getElementsByTagName('*');
$a = array();
foreach($elements as $element) {
    if(in_array($element->tagName, array('html', 'body'))) continue;
    if(!empty($element->nodeValue)) {
        $a[] = $element->nodeValue;
    } else {
        foreach($element->attributes as $att) {
            $a[] = $att->value;
        }
    }
}

echo '<pre>';
print_r($a);

应该产生这个(基于示例标记):

Array
(
    [0] => This is the sample image
    [1] => test.png
    [2] => this is thesample test
)