У меня странная проблема. рассмотрим этот короткий код:
<?php $reg = '/(?<!\pL)(test)(?!\pL)/u'; $text='This is a test text'; $replace = 'test_replaced'; $newtext = preg_replace($reg, $replace, $text); echo "Error: ".preg_last_error()."\nResult: ".$newtext."\n"; ?>
На некоторых серверах соответствие границ UTF8 не работает. я получил
Error: 0 Result:
На большинстве серверов все работает нормально:
Error: 0 Result: This is a test_replaced text
Проблема, по-видимому, связана с границей слов, когда я использую \b
а код работает.
Оба сервера используют php 5.2.13. Какие-нибудь подсказки, что может быть неправильно и как обойти это?
Комментарий здесь, кажется, предполагает, что PCRE необходимо скомпилировать с помощью --enable-unicode-properties
.