PHP调用'>'正则表达式中的未知修饰符? (分隔符问题)

时间:2012-05-23 22:03:29

标签: php pcre

private function pageScrape( $url )
{
    $page_stream = file_get_contents( $url );
    $pattern = '/<link\s+(?=[^>]*rel="(?:[Ss]hortcut\s)?[Ii]con"\s+)(?:[^>]*href="(.+?)").*/>/';
    preg_match( $pattern, $page_stream, $matches );
    print_r( $matches );
    // echo $page_stream;
}

给出错误:

  

警告:preg_match()[function.preg-match]:未知的修饰符   '&GT;'在    /home/foo/public_html/foo/source/class.ControlBookmark.php 的   在线 16

关于pcre的PHP.net参考

http://php.net/manual/en/reference.pcre.pattern.syntax.php

2 个答案:

答案 0 :(得分:2)

在正则表达式模式变量$pattern中使用正则表达式边界/分隔符,如下所示:

$pattern = '#<link\s+(?=[^>]*rel="(?:[Ss]hortcut\s)?[Ii]con"\s+)(?:[^>]*href="(.+?)").*/>#';

答案 1 :(得分:1)

您的问题是由于表达式末尾未转义的斜杠。试试这个:

$pattern = '/<link\s+(?=[^>]*rel="(?:[Ss]hortcut\s)?[Ii]con"\s+)(?:[^>]*href="(.+?)").*\/>/';