2012-05-23 5 views
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; 
} 

дает ошибку:PHP вызывает '>' неизвестный модификатор в регулярном выражении? (Разделительный вопрос)

Warning: preg_match() [function.preg-match]: Unknown modifier '>' in /home/foo/public_html/foo/source/class.ControlBookmark.php on line 16

PHP.net ссылка на PCRE

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

ответ

2

Использование регулярных выражений границы/Разделитель в вашем регулярное выражение переменной шаблона $pattern следующим образом:

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

Мне нравятся косые черты для консистенции. –

+1

Поскольку в вашем регулярном выражении уже есть/(косая черта), лучше избегать использования/в качестве разделителя регулярных выражений (например, в моем ответе с помощью #) или сбежать от него как \ \. – anubhava

+0

Хеш классный .. не знаю, я мог бы его использовать. –

1

Y ou проблема из-за невыполненной косой черты в конце вашего выражения. Попробуйте это вместо:

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

 Смежные вопросы

  • Нет связанных вопросов^_^