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

时间:2013-12-04 22:15:05

标签: php html string selector

我正在阅读this文章。这个功能包括:

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

...似乎首先在字符串中返回<p>。但是,我怎样才能在字符串中获得第一个HTML元素(padiv,...)(CSS中的:first-child种类。)

2 个答案:

答案 0 :(得分:3)

您可以使用http://php.net/strstr作为文章

首先搜索"<p>“这将为您提供第一次出现到结尾的完整字符串

$first = strstr($html, '<p>');

然后在该结果中搜索“</p>”,这将为您提供您不想保留的所有HTML

$second = strstr($first, '</p>');

然后删除不需要的html

$final = str_replace($second, "", $first);

通过在之前的结果中查找“<”和“</$”,可以使用相同的方法来获得第一个孩子。你需要检查&lt;之后的第一个字符/单词。找到正确的结束标签。

答案 1 :(得分:0)

通常建议避免使用字符串解析方法来查询html。

您会发现html附带了很多极端情况和语法分析怪癖,以至于您认为自己对代码的使用多么聪明,html都会出现,并用破坏测试的字符串来打击您。< / p>

我强烈建议您使用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));