我正在阅读this文章。这个功能包括:
<?php
function getFirstPara($string){
$string = substr($string,0, strpos($string, "</p>")+4);
return $string;
}
?>
...似乎返回首先在字符串中找到<p>
。但是,我怎么能在字符串中找到第一个HTML元素(p
,a
,div
,...)(CSS中的:first-child
种类)。
您可以使用http://php.net/strstr作为文章
首先搜索"<p>
“这将为您提供从第一次出现到结束的完整字符串
$first = strstr($html, '<p>');
然后在该结果中搜索“</p>
”,这将为您提供所有您不想保留的HTML
$second = strstr($first, '</p>');
然后删除不需要的HTML
$final = str_replace($second, "", $first);
通过在之前的结果中查找“<
”和“</$
”,可以使用相同的方法来获得第一个孩子。您需要检查<后面的第一个字符/单词以查找正确的结束标记。
通常建议避免使用字符串解析方法来查询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));