Регулярное выражение не соответствует? Кодирование вопроса? - PullRequest
0 голосов
/ 12 марта 2012

Странная проблема ...

У меня есть этот документ, когда я копирую текст и помещаю его в свой скрипт (как строковую переменную), регулярное выражение успешно совпадает. Однако, когда я использую file_get_contents, чтобы добраться до документа (из Интернета), это не так.

Это как-то связано с кодировкой? Документ ISO-8859-1, но преобразован в utf8 через utf8_encode

Обратите внимание, что строковая переменная создается из этого кодированного вывода utf8.

Это тоже простое регулярное выражение:

if (preg_match_all('/<h3 align=center><A NAME="([^"]*)"><\/A>(.*)<\/h3>(.*)::break::/isUu', $contents, $matches, PREG_SET_ORDER)) {

Есть идеи, что может быть не так?

1 Ответ

0 голосов
/ 14 марта 2012

Это произошло не из-за кодировки, а из-за достижения backtrack_limit.

Переопределение настройки следующим:

 ini_set('pcre.backtrack_limit', '1000000');

(вместо 100 000) исправляет проблему. PHP 5.3. также имеет это значение, так что это не просто действительно большое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...