2014-11-10 2 views
1

Я работаю над простым поиском. Он разбивает термины по пространству, что прекрасно работает. Однако он не распознает пространства других языков.заменить все языковые пространства на стандартное пространство

Я хочу, чтобы preg_replace пространства других языков в стандартизованное пространство.

пример,

$pattern  = array(
    //insert other language space codes here (I don't know what they are or how to find them) 
); 
$replacement = ' '; 
$string  = "日本語 の スペース です"; 

$cleaned = preg_replace($pattern, $replacement, $string); 
+1

Вы пытались 'preg_replace ('/ \ s /', '', $ string)'? Возможно, Regex поймает другие языковые пространства – sjagr

+0

@sjagr, к сожалению, он его не поймал. Он будет ловить пространство, если я наберу конкретное пространство. Который я, вероятно, сделаю тем временем. –

ответ

2

Используйте модификатор u в шаблоне вместе с последовательностью \s побег, который будет соответствовать любой символ пробела. Это будет выглядеть примерно так (с помощью кода):

$pattern = '/\s/u'; 
$replacement = ''; 
$string  = "日本語 の スペース です"; 

$cleaned = preg_replace($pattern, $replacement, $string); 

var_dump($cleaned); 

Выход:

string(30) "日本語のスペースです" 

От the manual:

и (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.

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