用标准化空间替换所有语言空间

时间:2014-11-10 17:51:10

标签: php

正在处理简单的搜索输入。它按空间分割术语,效果很好。但是它无法识别其他语言空间。

我想将其他语言空间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 个答案:

答案 0 :(得分:2)

使用模式中的u修饰符以及与{em>任何空格字符匹配的\s转义序列。这看起来像这样(使用你的代码):

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

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

var_dump($cleaned);

输出:

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

来自the manual

  你是(PCRE_UTF8)

     

此修饰符打开与Perl不兼容的PCRE的其他功能。模式和主题字符串被视为UTF-8。此修饰符可从Unix上的PHP 4.1.0或更高版本以及win32上的PHP 4.2.3获得。自PHP 4.3.5起,检查模式和主题的UTF-8有效性。无效主题将导致preg_ *函数无匹配;无效模式将触发级别E_WARNING的错误。自PHP 5.3.4起,五个和六个八位字节UTF-8序列被视为无效(分别为PCRE 7.3 2007-08-28);以前那些被认为是有效的UTF-8。