使用php获取来自h1标签的所有值

我想要接收包含文本中所有h1标签值的数组

例如,如果这里给定的输入字符串:

<h1>hello</h1>
<p>random text</p>
<h1>title number two!</h1>

我需要收到一个包含这个数组的数组:

titles[0] = 'hello',
titles[1] = 'title number two!'

我已经想出了如何获得字符串的第一个h1值,但我需要给定字符串中所有h1标签的所有值。

我目前正在使用它来接收第一个标签:

function getTextBetweenTags($string, $tagname) 
 {
  $pattern = "/<$tagname ?.*>(.*)</$tagname>/";
  preg_match($pattern, $string, $matches);
  return $matches[1];
 }

我将它传递给我想要解析的字符串,并作为$ tagname放入“h1”中。 虽然我没有自己写,但我一直试图编辑代码来完成我想要的功能,但没有任何效果。

我希望有人能帮助我。

提前致谢。


你可以使用simplehtmldom:

function getTextBetweenTags($string, $tagname) {
    // Create DOM from string
    $html = str_get_html($string);

    $titles = array();
    // Find all tags 
    foreach($html->find($tagname) as $element) {
        $titles[] = $element->plaintext;
    }
}

function getTextBetweenTags($string, $tagname){
    $d = new DOMDocument();
    $d->loadHTML($string);
    $return = array();
    foreach($d->getElementsByTagName($tagname) as $item){
        $return[] = $item->textContent;
    }
    return $return;
}

DOM的替代品。 内存问题时使用。

$html = <<< HTML
<html>
<h1>hello<span>world</span></h1>
<p>random text</p>
<h1>title number two!</h1>
</html>
HTML;

$reader = new XMLReader;
$reader->xml($html);
while($reader->read() !== FALSE) {
    if($reader->name === 'h1' && $reader->nodeType === XMLReader::ELEMENT) {
        echo $reader->readString();
    }
}
链接地址: http://www.djcxy.com/p/5069.html

上一篇: getting all values from h1 tags using php

下一篇: DOMDocument in php