Каким должен быть флаг preg_match_all `u`?

У меня есть код в приложении PHP, который возвращает null, когда я пытаюсь использовать его на рабочем сервере, но он отлично работает на сервере разработки. Вот строка кода:

// use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );

Каким должен быть флаг u? Я тестировал с mb_string включен и отключен, и он, похоже, не влияет на него.

Ошибка, которую я получаю,

preg_match_all: Compilation failed: unknown option bit(s) set at offset -1

больше информации

это один из вариантов на сервере prodction:

'--with-pcre-regex=/opt/pcre'

а вот секции pcre

Picture.png http://img829.imageshack.us/img829/8524/pictureke.png

Я считаю, что это примечание @Wesley ссылалось на:

In  order  process  UTF-8 strings, you must build PCRE to include UTF-8
support in the code, and, in addition,  you  must  call  pcre_compile()
with  the  PCRE_UTF8  option  flag,  or the pattern must start with the
sequence (*UTF8). When either of these is the case,  both  the  pattern
and  any  subject  strings  that  are matched against it are treated as
UTF-8 strings instead of strings of 1-byte characters.

Любые ссылки или советы о том, как "создать PCRE для включения UTF-8"?

через

результаты pcretest -C

PCRE version 6.6 06-Feb-2006
Compiled with
  UTF-8 support
  Unicode properties support
  Newline character is LF
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack
4b9b3361

Этот флаг зависит от создания PCRE с поддержкой поддержки Unicode.

PHP объединяет эту библиотеку и обычно создается с поддержкой поддержки unicode: модификатор u доступен и всегда работает с PHP 4.1.0, когда PHP построен с помощью библиотеки PCRE.

Однако некоторые дистрибутивы Linux строят PHP против собственной сборки PCRE, у которых нет поддержки Unicode, и в результате модификатор u не работает над этими сборками.

Решение заключается в использовании альтернативного пакета PHP.

4
ответ дан 17 сент. '11 в 21:35
источник

Это зависит от компиляции PCRE с помощью --enable-utf8.

1
ответ дан 17 сент. '11 в 21:33
источник