Php 7.4

Uważam, że przycinanie PHP jest nieprawidłowe działanie. Usuwa duplikat ciągnące i czołowe przestrzenie, ale pozostawia pojedynczą końcówkę i wiodącą przestrzeń.

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 jest tablicą "Wartość oddzielona przecinka".

Jak mogę udostępnić trim(), aby zachowywać się prawidłowo, a zatem uzyskać $list, aby stać się {"test", "test", "test", "test", "test", "test"}, bez ręcznego sprawdzania i korygowania pierwszego i ostatniego znaku każdego ciągu w $list?

Jest niedopuszczalne, aby usunąć każdą pojedynczą instancję WhiteSPACE, jednak, ponieważ poprawny $str może być "test entry, test entry, test, test", który powinien stać się {"test entry", "test entry", "test", "test"}

-1
USB_S0lderer 22 listopad 2020, 16:42

1 odpowiedź

Najlepsza odpowiedź

Musisz przypisać wynik array_map do zmiennej.

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));
2
acg 22 listopad 2020, 14:07