正在处理简单的搜索输入。它按空间分割术语,效果很好。但是它无法识别其他语言空间。
我想将其他语言空间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);
答案 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。