我的正则表达式函数有什么问题?

时间:2012-09-25 21:17:00

标签: php regex

这似乎是一件简单的事情。无论如何,在我的代码的底部是一个使用函数结果的数组。现在它似乎没有工作,我认为它可能是我扫描Meta关键字的正则表达式。所以基本上,我想知道我的功能是错误的,或者如何创建一个完全正常的正则表达式代码

function getKeywords($link) {
$str2 = file_get_contents($link);    
if (strlen($str2)>0) {
    preg_match_all( '(?i)<meta\\s+name=\"keywords\"\\s+content=\"(.*?)\">', $str2, $keywords);
  return $keywords[1];
}
}

1 个答案:

答案 0 :(得分:2)

试试这个:

function getKeywords($link) {
    $str2 = file_get_contents($link);    
    if (strlen($str2)>0) {
        if(preg_match( '/<meta\s+name="keywords"\s+content="(.*?)">/i', $str2, $keywords))
            return $keywords[1];
        else
            return "";

    }
}

你的表达有多个问题:

1)。对于\ s和\“

的许多转义字符

2)。你没有带/和以/

结尾

3)。您使用的是preg_match_all而不是preg_match

4)。当没有找到关键字元标记时,您没有处理此案例。