PHP内部使用PHP逻辑的标签之间的preg_match

时间:2011-02-24 21:02:41

标签: php preg-match

我有一个动态的站点地图创建脚本,递归查看文件系统,并在需要时打开文件的开头,然后查找标签之间的文本。当设置就像......时,它起作用了。

<title>Page Title | Company, Inc.</title>

但是现在我添加了一个皱纹并设置了一种通过管理工具管理标题和元信息的方法。为了防万一没有输入,我想回到旧的默认标题信息,但我的preg_match不适用于此...

<title><?=@$page_meta_array['page_title']!=''?$page_meta_array['page_title']:"Default Title Here";?> | Company, Inc.</title>

我传递页面的php函数看起来像这样......

function get_title($filename) {
    $retval = "";
    $handle = fopen($filename, "r");
    $head = fread($handle, 4096);
    preg_match(";<title>(.+)</title>;", $head, $matches);
    if(sizeof($matches) == 2) {
        $retval = trim($matches[1]);
    }
    fclose($handle);

    return $retval;
}

有人能指出我正确的preg_match吗?我想从上面的第二个例子中返回“Default Title Here”。

由于

2 个答案:

答案 0 :(得分:0)

这可能会这样做:

preg_match(';<title><\?[^>]*"([^"]*)"[^>]*></title>;', $head, $matches);

请注意,不推荐使用短标记,并且可能无法在PHP6中使用。

答案 1 :(得分:0)

首先需要解析PHP代码,然后检查匹配项。为什么不直接使用$ page_meta_array ['page_title']的内容?