从字符串中获取第一个HTML元素


Get first HTML element from a string

我正在阅读这篇文章。该功能包括:

<?php 
    function getFirstPara($string){
        $string = substr($string,0, strpos($string, "</p>")+4);
        return $string;
    }
?>

似乎返回字符串中第一个找到的CCD_ 1。但是,我怎么能得到字符串中的第一个HTML元素(padiv…)(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"</$"来获得第一个子项。您需要检查<以找到正确的结束标记。