2016-05-05 4 views
0

Я хочу прекратить повторять символ более 3 раз, чтобы превратить его в juste 3 раза.Мое регулярное выражение не распознает арабский символ

Пример: aaaaaaaaaall => aaall

Итак, я сделал это с английским характером, и она работала:

$patternReplace = '/(.)\1{3,}/i'; 
$chaine = preg_replace($patternReplace, "$1$1$1", $chaine, -1); 

, но он не работает для арабского характера, как:

أأأأأأأأأأأأأأأأأأأأأأأأأأأأ 

thanx для справки

ответ

0

Используйте модификатор u:

$patternReplace = '/(.)\1{3,}/iu'; 
$chaine = preg_replace($patternReplace, "$1$1$1", $chaine, -1); 

Документы из PHP.net:

и (PCRE_UTF8)
Этот модификатор включает дополнительную функциональность PCRE, которая не совместима с Perl. Строка и предметные строки рассматриваются как UTF-8. Этот модификатор доступен с PHP 4.1.0 или выше в Unix и с PHP 4.2.3 на win32. UTF-8 справедливость шаблона и объекта проверяется с PHP 4.3.5. Недействительный объект приведет к тому, что функция preg_ * не будет соответствовать ничему; недопустимый шаблон вызовет ошибку уровня E_WARNING. Пять и шесть октетных последовательностей UTF-8 считаются недействительными с PHP 5.3.4 (соответственно PCRE 7.3 2007-08-28); ранее они считались действительными UTF-8.

+0

thanx много !!!! – user3134277

+0

@ user3134277 Счастливый, это сработало для вас! Чтобы принять ответ, вы должны нажать галочку ниже стрелок слева от этого ответа :-) – andlrc

Смежные вопросы