У меня такой массив:
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()
?
Вы можете взять array_walk:
// Removes starting and trailing < and > characters function trim_gt_and_lt(&$value) { $value = trim($value, "<>"); } array_walk($array, 'trim_gt_and_lt');
Обратите внимание, что это также удалит start >
и trailing <
которые могут быть не такими, какие вы хотите.
Во-первых, если вы хотите изменить значения, вы хотите использовать array_map()
, а не array_filter()
. array_filter()
выборочно удаляет или сохраняет записи массива.
$output = array_map('remove_slashes', $input); function remove_slashes($s) { return preg_replace('!(^<|>$)!', '', $s); }
Конечно, вы могли бы сделать это с помощью простой петли foreach
.
str_replace – это опция или любые другие функции замены в PHP, такие как preg_replace и т. д.
вы проходите через массив и делаете это один за другим?
$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 )
Почему бы просто не использовать 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)