我有一个这样的数组:
Array
(
[0] => "<one@one.com>"
[1] => "<two@two.co.in>"
[2] => "<three@hello.co.in>"
)
现在我要从上面的数组中删除"<"
和">"
,使其看起来像
Array
(
[0] => "one@one.com"
[1] => "two@two.co.in"
[2] => "three@hello.co.in"
)
如何在PHP中执行此操作?请帮帮我。
我正在使用array_filter()
;有没有更简单的方法来做到这一点,除了array_filter()
?
答案 0 :(得分:7)
你可以在上面使用array_walk:
// Removes starting and trailing < and > characters
function trim_gt_and_lt(&$value)
{
$value = trim($value, "<>");
}
array_walk($array, 'trim_gt_and_lt');
但请注意,这会同时删除>
的开始和<
的结尾,这可能不是您想要的。
答案 1 :(得分:5)
首先,如果您想更改值,则需要array_map()
,而不是array_filter()
。 array_filter()
有选择地删除或保留数组条目。
$output = array_map('remove_slashes', $input);
function remove_slashes($s) {
return preg_replace('!(^<|>$)!', '', $s);
}
当然,您也可以使用简单的foreach
循环执行此操作。
答案 2 :(得分:1)
str_replace是一个选项,或PHP中的任何其他替换函数,如preg_replace等。
答案 3 :(得分:0)
你通过数组并逐个进行?
$arr = array( "<one@one.com>", "<two@two.co.in>" ,"<three@hello.co.in>");
foreach ($arr as $k=>$v){
$arr[$k] = trim($v,"<>") ;
}
print_r($arr);
输出
$ php test.php
Array
(
[0] => one@one.com
[1] => two@two.co.in
[2] => three@hello.co.in
)
答案 4 :(得分:0)
为什么不使用str_replace
$teste = array("<one@one.com>","<two@two.co.in>","<three@hello.co.in>");
var_dump(str_replace(array('<','>'),'',$teste));
将打印出来
array
0 => string 'one@one.com' (length=11)
1 => string 'two@two.co.in' (length=13)
2 => string 'three@hello.co.in' (length=17)