为什么 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?我们该如何解决?

这很难排除故障,这里有更详细的描述

  1. 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 实际上 九倍。但是你可以使用它。
在这里查看速度比较。