为什么 trim 函数无法正确输入日文?
Why does trim function not working correctly for Japanese input?
我想 trim 字符串前后的完整字节空间。它可以同时包含日文 and/or 英文字母。但是,对于以平假名和片假名开头的字符串,它并不完美。
//test1
$text = " romaji ";
var_dump(trim($text," ")); // returns "romaji"
//test2
$text = " ひらがな ";
var_dump(trim($text," ")); // returns "��らがな"
//test3
$text = " カタカナ ";
var_dump(trim($text," ")); // returns "��タカナ"
//test4
$text = " 漢字 ";
var_dump(trim($text," ")); // returns "漢字"
为什么代码不适用于测试 2 和 3?我们该如何解决?
这很难排除故障,这里有更详细的描述
PHP output showing little black diamonds with a question mark
为了克服这个问题,您可以使用 str_replace
。
用字符串中的任何内容替换所有空格。这将删除所有空格。 不 推荐在句子中使用,因为它会删除所有空格。 文字好。
$text = " ひらがな ";
$new_str = str_replace(' ', '', $text);
echo $new_str; // returns ひらがな
如果要删除开头和结尾的空格,请使用带 preg_replace
的正则表达式
print preg_replace( '/^s+|s+$/', '', " ひらがな ひらがな" ); //return ひらがな ひらがな
trim 实际上 快 九倍。但是你可以使用它。
在这里查看速度比较。
我想 trim 字符串前后的完整字节空间。它可以同时包含日文 and/or 英文字母。但是,对于以平假名和片假名开头的字符串,它并不完美。
//test1
$text = " romaji ";
var_dump(trim($text," ")); // returns "romaji"
//test2
$text = " ひらがな ";
var_dump(trim($text," ")); // returns "��らがな"
//test3
$text = " カタカナ ";
var_dump(trim($text," ")); // returns "��タカナ"
//test4
$text = " 漢字 ";
var_dump(trim($text," ")); // returns "漢字"
为什么代码不适用于测试 2 和 3?我们该如何解决?
这很难排除故障,这里有更详细的描述
PHP output showing little black diamonds with a question mark
为了克服这个问题,您可以使用 str_replace
。
用字符串中的任何内容替换所有空格。这将删除所有空格。 不 推荐在句子中使用,因为它会删除所有空格。 文字好。
$text = " ひらがな ";
$new_str = str_replace(' ', '', $text);
echo $new_str; // returns ひらがな
如果要删除开头和结尾的空格,请使用带 preg_replace
print preg_replace( '/^s+|s+$/', '', " ひらがな ひらがな" ); //return ひらがな ひらがな
trim 实际上 快 九倍。但是你可以使用它。
在这里查看速度比较。