我正在使用这样的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应该以正确的顺序存储在数组和内容中。
答案 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);
答案 1 :(得分:0)
DOMDocument
是的,你可以。获取nodeValue
或attributes
的无效标记。例如:
$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
)