快速且可能非常简单的问题;
$str="<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque turpis risus, rutrum pretium scelerisque nec, sollicitudin ac quam. Nulla eu dolor sapien, id bibendum augue. Aliquam eu nunc mi. Nam consectetur vestibulum leo elementum condimentum. Etiam varius malesuada sapien eget fermentum. Aenean ut massa lacus. Duis non enim enim. </p>
<p>Nam egestas laoreet eros, a mattis dui fringilla ac. Aliquam erat volutpat. Mauris mattis vulputate condimentum. Vivamus libero quam, tincidunt at viverra id, iaculis a tellus. Cras venenatis ante non enim interdum ac adipiscing neque euismod. Pellentesque nec elementum metus.
</p>"
我想获取'&lt;之间的每个文字。 p>'标签。由于我是初学者php程序员,我想在构建直接 for 循环之前询问是否有任何简单的方法。
答案 0 :(得分:5)
始终使用正确的HTML / XML解析,例如DomDocument
例如:
$p = array();
$doc = new Domdocument;
$doc->loadHTML($str);
foreach( $doc->getElementsByTagName("p") as $entry)
{
$p[] = $entry->nodeValue;
}
// $p will be the array contains each p contents
答案 1 :(得分:0)
你可以,例如用perl regular expression matching
解决这个问题<?php
preg_match('/<p>(.+)</p>/', $str, $matches);
?>
$matches[1]
将包含代码之间的所有内容。请注意,如果您的字符串包含多个标记,则不会产生您想要的结果,因为后面的标记将从字符串的末尾而不是从前面查询。
答案 2 :(得分:0)
你可以选择@ajreal提到的DOM解决方案(我不推荐正则表达式),但如果你的字符串在每个段落后面包含换行符,你也可以在新行上explode
然后使用strip_tags
摆脱标签。
DOM解决方案更具防弹性。