我使用PHP(来自HTML)在两个标签之间获取文本。
我使用的示例代码是:
function GDes($url) {
$fp = file_get_contents($url);
if (!$fp) return false;
$res = preg_match("/<description>(.*)<\/description>/siU", $fp, $title_matches);
if (!$res) return false;
$description = preg_replace('/\s+/', ' ', $title_matches[1]);
$description = trim($description);
return $description;
}
它在description
标签之间提供,但我的问题是如果网页必须有description
个标签,它会给出第一个我不需要的标签。
我需要得到第二个。
例如,如果我的HTML是这样的:
<description>No need to this</description>
<description>I NEED THIS ONE</description>
我需要使用上面的函数给出第二个描述标记。
需要对功能进行哪些更改?
答案 0 :(得分:2)
请改用preg_match_all
。它将创建一个包含所有匹配项的数组。
您可以按原样保留代码,只需将preg_match
替换为preg_match_all
。
然后,您必须在$title_matches[1][1]
调用中使用$title_matches[1]
而不是preg_replace
,因为$title_matches
现在是一个多维数组。