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

问题描述 投票:3回答:2

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

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

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

php html string selector
2个回答
3
投票

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

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

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

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

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

然后删除不需要的HTML

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

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


1
投票

通常建议避免使用字符串解析方法来查询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));
© www.soinside.com 2019 - 2024. All rights reserved.