PHP PCRE (regex) не поддерживает UTF-8? - PullRequest
3 голосов
/ 21 января 2010

Я пытаюсь запустить регулярное выражение на своем сайте, и я получаю этот ответ:

Компиляция не удалась: поддержка \ P, \ p, и \ X не был скомпилирован в смещение 1

Немного погуглив, я обнаружил, что, очевидно, мой PCRE на моем сервере не поддерживает UTF8 и поэтому вызывает проблемы. Когда я ssh с pcretest -C я получаю

PCRE, версия 6.6, 06 февраля 2006 г.

Скомпилировано с поддержкой UTF-8 Нет Свойства Юникода поддерживают Newline символ LF Размер внутренней ссылки = 2 POSIX malloc порог = 10
Предел соответствия по умолчанию = 10000000
Предел глубины рекурсии по умолчанию = 10000000 Рекурсия совпадений использует стек

Когда я выполняю yum update pcre, он говорит мне, что обновлять нечего.

Люди говорят мне, что я могу включить поддержку UTF-8 ... помощь?

Я нуб.

Ответы [ 3 ]

3 голосов
/ 21 января 2010

Есть хорошее руководство по восстановлению RPM для pcre здесь .

Если вы прокрутите вниз до «Обновленный RPM-файл для ...», вы найдете несколько готовых RPM-пакетов, если хотите, чтобы они работали (не забудьте перезапустить Apache после завершения, а не просто изящную перезагрузку) .

Версия tl; dr: перекомпилировать pcre с --enable-utf8 и --enable-unicode-properties

3 голосов
/ 06 июля 2011

Yum теперь должен найти v6.6.6.el5_6.1 PCRE в своих репозиториях, поэтому выполнение yum update pcre решило проблему для меня в Centos 5.

1 голос
/ 21 января 2010

PHP не использует приложение / пакет pcre. Поддержка PCRE встроена в библиотеки PHP. Полученная ошибка говорит о том, что ваши библиотеки PHP не были скомпилированы с поддержкой PCRE UTF-8.

Вам нужно будет перекомпилировать PHP с соответствующей статической библиотекой PCRE, созданной с соответствующей опцией UTF-8.

...