1
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]:第16/home/foo/public_html/foo/source/class.ControlBookmark.php中的未知修饰符 '>'

关于 pcre 的 PHP.net 参考

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

4

2 回答 2

2

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

$pattern = '#<link\s+(?=[^>]*rel="(?:[Ss]hortcut\s)?[Ii]con"\s+)(?:[^>]*href="(.+?)").*/>#';
于 2012-05-23T22:06:19.220 回答
1

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

$pattern = '/<link\s+(?=[^>]*rel="(?:[Ss]hortcut\s)?[Ii]con"\s+)(?:[^>]*href="(.+?)").*\/>/';
于 2012-05-23T22:11:03.770 回答