在Eloquent访问器中trim(xa0)后出现UTF-8错误


UTF-8 Error after trim(xa0) in Eloquent accessor

我正在使用下一个帮助器通过Eloquent Accessors修剪模型上用户的first_name和last_name:

function clean($string){
    return trim($string, " 't'n'r'0'x0B'xc2'xa0");
}

然后在模型中:

public function getFirstNameAttribute($firstname){
    return clean(ucwords(strtolower($firstname)));
}
public function getLastNameAttribute($lastname){
    return clean(ucwords(strtolower($lastname)));
}

很多名字都来自excel,后面有空格,可以去掉'xa0,但是当它试图去掉特殊字符时,问题就来了,如().

我试着删除它,它没有失败,但是,它没有删除尾随空格。

我也试着确保头的字符集设置为utf-8

任何想法?谢谢。

我只想让不可见的空格消失:/

错误信息:

InvalidArgumentException in JsonResponse.php line 69:
Malformed UTF-8 characters, possibly incorrectly encoded

尝试使用mb_strtolower()mb_convert_case()代替strtolower()ucwords()

代替trim(),你可以从这里尝试这个函数:

function mb_trim($str) {
    return preg_replace("/(^'s+)|('s+$)/us", "", $str); 
}