Я пытаюсь захватить все URL-адреса в большом файле css.
Я пробовал использовать это регулярное выражение:
preg_match_all("/url\('(\\'|[^'])*'\)/m", $css, $matches);
$css
- это переменная размером 10 КБ, читаемая из файла css с использованием file_get_contents
. $matches
- пустой массив.
Однако это приводит к (net::ERR_EMPTY_RESPONSE)
ошибке в chrome: сервер не отправляет никаких данных. Если я верну функцию непосредственно перед этой строкой, все будет работать нормально. Если я верну функцию чуть ниже этой строки, я получу пустой ответ.
Он даже не отправляет данные, которые я вывел перед этой строкой, и отвечает (пустым ответом) в течение нескольких секунд - далеко не 30-секундный тайм-аут.
Он работал нормально, когда я впервые использовал это регулярное выражение и передал результат в приведенный выше код. preg_match_all("/@font-face{[^}]+}/m", $css, $matches);
Эта строка была до того, как я понял, что мне нужны другие URL-адреса, а не только шрифты.
Кто-нибудь знает, что пошло не так?
ОБНОВЛЕНИЕ. Может быть, это ошибка?
https://bugs.php.net/bug.php?id=62049
ссылки на:
http://codepad.org/FmlJi8N9
и быстрый поиск в Google позже:
Предупреждение : preg_match (): Внутренний pcre_fullinfo ()
Как я могу это исправить?
explode(PHP_EOL, $subject);
иforeach
не помогли решить эту проблему. - person Filip Haglund   schedule 21.07.2013