使用array_map替换字符之间的空格

时间:2012-08-02 22:12:03

标签: php arrays string

我正在使用逗号分隔值

创建一个数组
$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更好地完成,就像我正在修剪一样吗?

3 个答案:

答案 0 :(得分:3)

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

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

这与可读性较差的

具有相同的结果
$result = array_map(function($el) { return str_replace(' ','-',$el); }, $result);

两者也相当于经典

foreach($result as &$element) {
    $element = str_replace(' ', '-', $element);
}

答案 1 :(得分: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);

答案 2 :(得分: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
)