trim() 留下单个尾随和前导 space

trim() leaves a single trailing and leading space

php 7.4

我认为 php 的 trim 出现故障。它删除了重复的尾随和前导 spaces,但它留下了一个尾随和前导 space.

function string_to_safe_list($str){
    $list = explode(",", $str);
    array_map(function($x){
        return trim(strtolower(htmlspecialchars($x)));
    }, $list);
    var_dump($str);
    var_dump($list);
    return $list;
}
$str = "test,test, test, test   ,  test, test";
=> string_to_safe_list($str) = {"test", "test", " test", " test ", " test", " test"}

$str 是一个“逗号分隔值”数组。

如何让 trim() 正常运行,从而让 $list 变成 {"test", "test", "test", "test", "test", "test"},而无需手动检查和更正 [=16] 中每个字符串的第一个和最后一个字符=]?

然而,删除每个白色space实例是不可接受的,因为有效的$str可能是"test entry, test entry, test, test",应该变成{"test entry", "test entry", "test", "test"}

您必须将 array_map 的结果分配给一个变量。

function string_to_safe_list($str){
    $list = explode(",", $str);
    $list = array_map(function($x){
        return trim(strtolower(htmlspecialchars($x)));
    }, $list);
    return $list;
}

$str = "test,test, test, test   ,  test, test";

var_dump(string_to_safe_list($str));