代码之家  ›  专栏  ›  技术社区  ›  xkeshav

在php中从数组中删除“<”和“>”标记

  •  2
  • xkeshav  · 技术社区  · 14 年前

    我有一个这样的数组:

    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() ;除了 数组过滤器() ?

    5 回复  |  直到 13 年前
        1
  •  7
  •   Pekka    14 年前

    你可以在上面走一走:

    // Removes starting and trailing < and > characters
    
     function trim_gt_and_lt(&$value) 
    { 
        $value = trim($value, "<>"); 
    }
    
    array_walk($array, 'trim_gt_and_lt');
    

    但是请注意,这将 删除启动 > 和拖尾 < 这可能不是你想要的。

        2
  •  5
  •   cletus    14 年前

    首先,如果你想改变价值观 array_map() 你想要,不是 array_filter() . 数组过滤器() 有选择地删除或保留数组项。

    $output = array_map('remove_slashes', $input);
    
    function remove_slashes($s) {
      return preg_replace('!(^<|>$)!', '', $s);
    }
    

    你当然可以用一个简单的 foreach 循环。

        3
  •  1
  •   Residuum    14 年前

    str_replace 是一个选项,或者php中的任何其他替换函数,如preg_replace等。

        4
  •  0
  •   ghostdog74    14 年前

    你在阵列中一个接一个地做?

    $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
    )
    
        5
  •  0
  •   AntonioCS    14 年前

    为什么不直接用 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)