0

我正在用逗号分隔值的字符串创建一个数组

$result = "apple, hello word, 80, apple";    

$result = str_getcsv($result); //create array     
$result = array_filter(array_map('trim', $result)); //remove whitespaces

值中的某些字符之间有空格,例如hello world,我想用破折号替换空格(以使字符串 URL 友好。)示例:hello-world

我想过使用遍历数组,但是可以像我正在修剪的str_replace那样使用它来做得更好吗?array_map

4

3 回答 3

4

str_replace也可以直接在数组上工作:

$result = str_replace(' ', '-', $result);

这将与可读性较差的结果相同

$result = array_map(function($el) { return str_replace(' ','-',$el); }, $result);

两者也都相当于经典

foreach($result as &$element) {
    $element = str_replace(' ', '-', $element);
}
于 2012-08-02T22:15:21.403 回答
1

尝试

function urlFrendly($str){
    return str_replace(' ', '-', $str);
}

$result = "apple, hello word, 80, apple";    

$result = str_getcsv($result); //create array     
$result = array_filter(array_map('trim', $result)); //remove whitespaces
$result = array_map('urlFrendly', $result); 
var_dump($result);
于 2012-08-02T22:15:55.680 回答
0
$result = "apple, hello word, 80, apple";
$replaced = preg_replace('/\s*([[:alpha:]]+) +([[:alpha:]]+)\s*/', '\\1-\\2',$result);
$array = str_getcsv($replaced);
print_r($array);

输出:

Array
(
[0] => apple
[1] => hello-word
[2] => 80
[3] => apple
)
于 2012-08-02T23:28:55.233 回答