PHP PCRE (regex) не поддерживает UTF-8?

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

Ошибка компиляции: поддержка \P, \p и \X не была скомпилирована по смещению 1.

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

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

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

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

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

Я нуб.


person johnnietheblack    schedule 21.01.2010    source источник


Ответы (3)


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

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

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

person Owen    schedule 21.01.2010

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

person Jonathan Day    schedule 06.07.2011
comment
yum update pcre работал на меня. Не забудьте после этого сделать service httpd restart. - person Steve Parish; 21.12.2012

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

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

person SoapBox    schedule 21.01.2010
comment
ладно, это круто... не сходить с ума, но поскольку я действительно новичок в этом... есть ли хороший учебник для новичков, который покажет мне, как перекомпилировать? спасибо за ваше терпение... я знаю, что это глупый вопрос - person johnnietheblack; 21.01.2010
comment
Честно говоря, мне никогда не приходилось этого делать, поэтому я действительно не знаю. Обычно это довольно просто (обычно: получить исходный код, разархивировать его, выполнить настройку, затем сделать, а затем установить). Сложность заключается в наличии всех необходимых условий. И вам, возможно, потребуется пересоздать libpcre. Также возможно, что вам нужно только переделать libpcre и вообще не трогать php. Я не уверен, связан ли он статически или динамически. - person SoapBox; 21.01.2010
comment
На всякий случай... Вы имели в виду pcre, а не prce, верно? - person SOFe; 17.12.2017