【问题标题】:remove "<" and ">" tags from an array in php从php中的数组中删除“<”和“>”标签
【发布时间】:2011-01-06 19:07:30
【问题描述】:

我有一个这样的数组:

Array
(
    [0] => "<one@one.com>"
    [1] => "<two@two.co.in>"
    [2] => "<three@hello.co.in>"
)

现在我想从上面的数组中删除 "&lt;""&gt;" 使其看起来像

Array
(
    [0] => "one@one.com"
    [1] => "two@two.co.in"
    [2] => "three@hello.co.in"
)

如何在 php 中做到这一点?请帮帮我。

我正在使用array_filter();除了array_filter(),还有什么更简单的方法吗?

【问题讨论】:

  • Uhmmm...你想从第一个数组中删除什么?对我来说它是空的......
  • 没关系。 Pekka 刚刚编辑了它。

标签: php string


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以在上面做一个 array_walk:

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

    但是请注意,这会删除开头的 &gt; 和结尾的 &lt;,这可能不是您想要的。

    【讨论】:

    • 这也会去掉前导 > 和尾随
    • 您甚至可以使用 array_walk() 中的匿名函数来完成它,但我现在无法进行查找和测试。
    • @cletus,好点子。我认为在他的数据集中它是无关紧要的,但仍然如此。为您的解决方案 +1,并为我的解决方案添加了一个警告。
    • 实际上,也许您可​​以使用str_replace 而不是trim,以防括号可能在其他地方(不是我真的相信)...
    • 这是一个重要的警告,但老实说,我什至不知道你可以用 trim() 做到这一点,所以 +1。
    【解决方案3】:

    你遍历数组,一个一个地做?

    $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】:

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

    【讨论】:

      【解决方案5】:

      首先,如果您想更改值,您需要的是array_map(),而不是array_filter()array_filter() 选择性地删除或保留数组条目。

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

      您当然也可以使用简单的foreach 循环来做到这一点。

      【讨论】:

      • 这些不是所谓的尖括号吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2012-01-26
      • 2013-02-24
      相关资源
      最近更新 更多