好的,我确定这是一个非常基本的问题,但我是 PHP 的新手,还没有弄明白。输入字符串是 $data im 试图继续拉取并且只使用第一个匹配项。以下是不正确的吗?这甚至可能不是执行该操作的最佳方式,我只是试图将内容拉入两个 html 标签(找到的第一组)之间并丢弃其余数据。我知道有类似的问题,我已经阅读了所有问题,我的问题是混合的,如果有更好的方法来做到这一点,以及我如何将匹配定义为剩余代码其余部分的新输入。如果我将 $matches 更改为 $data2 并从那里开始使用它,它会返回错误。
preg_match('/<h2>(.*?)<\/h2>/s', $data, $matches);
不要通过 preg_match
解析 HTML,而是使用这个 PHP 类:
示例:
<?php
$html= "<p>hi</p>
<h1>H1 title</h1>
<h2>H2 title</h2>
<h3>H2 title</h3>";
// a new dom object
$dom = new domDocument('1.0', 'utf-8');
// load the html into the object
$dom->loadHTML($html);
//discard white space
$dom->preserveWhiteSpace = false;
$hTwo= $dom->getElementsByTagName('h2'); // here u use your desired tag
echo $hTwo->item(0)->nodeValue;
//will return "H2 title";
?>
Reference