我在一个字符串中有4段文字。每个段落都被<p></p>
包围。
我在网上搜索过那里已有的东西。只显示第一段,但我没有找到关于显示第1-2段然后显示其余段落的内容。任何人都可以帮忙吗?
不确定使用哪个,substr,strpos等.....?
编辑 - 感谢您的回答,澄清一下,段落目前不包含HTML,但是我需要选择在每个段落中包含HTML。
答案 0 :(得分:1)
初始化:
$dom = new DOMDocument;
$dom->loadHTML($myString);
$p = $dom->getElementsByTagName('p');
如果每个可以包含其他HTML元素(或不包含),请创建一个函数:
function getInner(DOMElement $node) {
$tmp = "";
foreach($node->childNodes as $c) {
$tmp .= $c->ownerDocument->saveXML($c);
}
return $tmp;
}
然后在需要这样的段落时使用该函数:
$p1 = getInner($p->item(0));
您可以阅读有关DOMDocument
here
答案 1 :(得分:0)
使用正则表达式:
$str = '<p style="color:red;"><b>asd</b>para<img src="afs"/>graph 1</p >
<p>paragraph 2</p>
<p>paragraph 3</p>
<p>paragraph 4</p>
';
// preg_match_all('/<p.*>([^\<]+)<\/p\s*>/i',$str,$matches);
//for inside html like a comment sais:
preg_match_all('/<p[^\>]*>(.*)<\/p\s*>/i',$str,$matches);
print_r($matches);
打印:
Array
(
[0] => Array
(
[0] => <p style="color:red;"><b>asd</b>para<img src="afs"/>graph 1</p >
[1] => <p>paragraph 2</p>
[2] => <p>paragraph 3</p>
[3] => <p>paragraph 4</p>
)
[1] => Array
(
[0] => <b>asd</b>para<img src="afs"/>graph 1
[1] => paragraph 2
[2] => paragraph 3
[3] => paragraph 4
)
)