在php中使用preg_match获取第二项

时间:2014-08-14 11:16:48

标签: php html

我使用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>

我需要使用上面的函数给出第二个描述标记。

需要对功能进行哪些更改?

1 个答案:

答案 0 :(得分:2)

请改用preg_match_all。它将创建一个包含所有匹配项的数组。 您可以按原样保留代码,只需将preg_match替换为preg_match_all

然后,您必须在$title_matches[1][1]调用中使用$title_matches[1]而不是preg_replace,因为$title_matches现在是一个多维数组。