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


replace all language spaces with standardized space

我正在处理一个简单的搜索输入。它按空格分隔术语,效果很好。但是,它不识别其他语言空间。

我想将其他语言空间预先放置到标准化空间中。

例如,

$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);

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

$pattern   = '/'s/u';
$replacement = '';
$string        = "日本語 の スペース です";
$cleaned = preg_replace($pattern, $replacement, $string);
var_dump($cleaned);

输出:

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

来自手册:

u(PCRE_UTF8)

此修饰符启用PCRE的附加功能,该功能与Perl不兼容。模式字符串和主题字符串被视为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。