gpt4 book ai didi

php - 如何使用 php DomDocument 获取特定标签的 html

转载 作者:行者123 更新时间:2023-11-28 01:26:11 24 4
gpt4 key购买 nike

首先我让它找到元素

$dom= new \DOMDocument();
$dom->loadHTML($html_string);
$only_p = $dom->getElementsByTagName('p')->item(1);

如果我尝试类似的东西

$only_p->textContent; /* <-- it will only return the text inside the paragraph and even remove all the tags inside of it */

我需要的是类似的东西

$only_p = $dom->getElementsByTagName('p')->item(1);
$only_p->outerHTML;

那会返回它周围的 HTML,比如

<p class="something"><a href="link"> this is text </a></p>

不仅仅是字符串“this is text”

最佳答案

我是这样解决的

/**
* Returns the outer HTML of a certain tag.
* You can decide whether the result should be returned as string or inside an array.
*
* @param $html_string
* @param $tagName
* @param string $return_as
* @return array|string
*/
public function getOuterHTMLFromTagName($html_string,$tagName,$return_as='array')
{
//create a new DomDocument based on the first parameter's html
$dom_doc= new \DOMDocument();
$dom_doc->loadHTML($html_string);

//set variables for the result type
$html_results_as_array = array();
$html_results_as_string = "";

// get tags from DocDocument
$elements_in_tag =$dom_doc->getElementsByTagName($tagName);

// loop through found tags
for($a=0; $a < $elements_in_tag->length; $a++)
{
// get tag of current key
$element_in_tag = $dom_doc->getElementsByTagName($tagName)->item($a);

//create a new DomDocument that only contains the tags HTML
$element_doc = new \DOMDocument();
$element_doc->appendChild($element_doc->importNode($element_in_tag,true));

//save the elements HTML in variables
$html_results_as_string .= $element_doc->saveHTML();
array_push($html_results_as_array,$element_doc->saveHTML());
}

//return either as array or string
if($return_as == 'array')
{
return $html_results_as_array;
}
else
{
return $html_results_as_string;
}
}

关于php - 如何使用 php DomDocument 获取特定标签的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32007445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com