2015-10-28 3 views
1

У меня есть этот код, который должен удаления не буквенные символы из строки:Regex вопрос с mb_ereg_replace

<?php 
$text = 'Random -text! and a word with many ppppps'; 
$text = mb_ereg_replace('[^\p{L} ]', ' ', $text); 
echo $text; 
?> 

Когда я запускаю его на локальном хосте (PHP 5.6) возвращает то, что я ожидал:

Random text and a word with many ppppps 

Но на GoDaddy (PHP 5.3) только возвращает:

ppppp 

Кажется, что-то с регулярным выражением '[^\p{L} ]' в mb_ereg_replace но я не могу понять, что.

+0

попробовать 'preg_replace' –

+0

@AvinashRaj не может использовать preg_replace из-за иностранных букв – neptune

+0

Используйте [' $ текст = preg_replace ('/ [^ \ р {L}]/и', '', $ текст); '] (https://ideone.com/9ipHrM). –

ответ

1

В соответствии с вашим комментарием ясно, что сервер godaddy не был настроен для работы с кодировкой UTF8. Таким образом, после добавления

ini_set('default_charset', 'UTF-8'); 

вы можете использовать

$text = preg_replace('/[^\p{L}\p{M} ]/u', ' ', $text); 

Посмотреть IDEONE demo доказав это работает с UTF8.