Php 为什么对于日语输入,微调功能不能正常工作?

Php 为什么对于日语输入,微调功能不能正常工作?,php,trim,cjk,Php,Trim,Cjk,我想在字符串前后填充字节空间。它可以包含日语和/或英语字母。然而,对于以平假名和片假名开头的字符串来说,它并不完美 //test1 $text = "  romaji  "; var_dump(trim($text," ")); // returns "romaji" //test2 $text = "  ひらがな  "; var_dump(trim($text," ")); // retur

我想在字符串前后填充字节空间。它可以包含日语和/或英语字母。然而,对于以平假名和片假名开头的字符串来说,它并不完美

//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的代码不起作用?我们如何解决它?

这很难排除故障,这里将详细介绍

  • 为克服此问题,您可以使用
    str\u replace
    。 将所有空格替换为字符串中的空白。这将删除所有空格建议在句子中使用,因为它会删除所有空格好的用于文字

    $text = "  ひらがな  ";
    $new_str = str_replace(' ', '', $text);
    echo $new_str;    // returns ひらがな
    
    如果要删除开头和结尾的空格,请使用带有
    preg\u replace

    print preg_replace( '/^s+|s+$/', '', "    ひらがな ひらがな" ); //return ひらがな ひらがな
    
    修剪实际上要快九倍。但是你可以使用它。
    在此处检查速度比较


    也许这个答案很有帮助。Php trim和UTF-8可能很棘手。这能回答您的问题吗。。。解决办法就在那里。已知不支持UTF-8的PHP函数可能会损坏多字节字符。作为记录,您测试中的“空格”是
    U+3000:表意空格
    。它将删除所有空格。。但是,我只想删除前导空格和尾随空格