php 7.4
I believe php's trim is malfunctioning. It removes duplicate trailing and leading spaces, but it leaves a single trailing and leading 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
is a "comma seperated value" array.
How can I get trim()
to behave properly and thus get $list
to become {"test", "test", "test", "test", "test", "test"}
, without manually checking and correcting the first and last character of each string in $list
?
It is unacceptable to delete every single whitespace instance however, because a valid $str
might be "test entry, test entry, test, test"
which should become {"test entry", "test entry", "test", "test"}
You have to assign the result of array_map to a variable.
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));