我正在阅读这篇文章。该功能包括:
<?php
function getFirstPara($string){
$string = substr($string,0, strpos($string, "</p>")+4);
return $string;
}
?>
似乎返回字符串中第一个找到的CCD_ 1。但是,我怎么能得到字符串中的第一个HTML元素(p
、a
、div
…)(CSS中的:first-child
)呢。
通常建议避免使用字符串解析方法来查询html。
你会发现html有很多边缘案例和解析怪癖,无论你认为你的代码多么聪明,html都会出现,并用一个破坏测试的字符串砸你的头。
我强烈建议您使用php-dom解析库(免费,通常默认包含在php安装中)。
例如DomDocument:
$dom = new 'DOMDocument;
$dom->loadHTML('<p>One</p><p>Two</p><p>Three</p>');
$elements = $dom->getElementsByTagName('body')->item(0)->childNodes;
print '<pre>';
var_dump($elements->item(0));
您可以使用http://php.net/strstr作为文章
第一次搜索"<p>
"这将为您提供从第一次出现到结束的完整字符串
$first = strstr($html, '<p>');
然后在结果中搜索"</p>
",这将给你所有你不想保留的html
$second = strstr($first, '</p>');
然后删除不需要的html
$final = str_replace($second, "", $first);
同样的方法可以通过在之前的结果中查找"<
"answers"</$
"来获得第一个子项。您需要检查<以找到正确的结束标记。