在PHP中多次查找和替换

时间:2014-01-09 06:37:13

标签: php string str-replace

我有一个类似下面的字符串

$str="<444970836741>BOA LTD.                                              
  CR
      9,00,000.00         Not Available           Not Available    Not Available           Not Available    TBI   31/12/13    31/12/13"; 

我需要输出如下

444970836741,900000.00,31/12/13,31/12/13

我需要做以下

  1. 删除'&lt;'和'&gt;'
  2. 删除TBI
  3. 删除“不可用”字段
  4. 保留sn(即444970836741)
  5. 保留金额但从金额中删除逗号(900000.00)
  6. 保留开始日期和结束日期(均为2013年12月31日)6。
  7. 我尝试使用str_replace,但删除所有空格和不必要的字符真的很痛苦。可以用PHP完成吗?

2 个答案:

答案 0 :(得分:1)

strcspnpreg_replacestr_replace可以帮助您

$str = "<444970836741>BOA LTD.                                              
  CR
      9,00,000.00         Not Available           Not Available    Not Available           Not Available    TBI   31/12/13    31/12/13"; 

function complicated($string)
{
    // Change into array
    $array = explode(" ", $string);

    // Unset element has no numbers
    foreach ($array as $key => $value)
    {
        if(strcspn($value, '0123456789') == strlen($value)){
            unset($array[$key]);
        }
    }

    // Return all the values of an array
    $array = array_values($array);

    // Remove everything from a string but just numbers
    $array[0] = preg_replace("/[^0-9]/","",$array[0]);

    // Remove commas
    $array[1] = str_replace(',', '', $array[1]);

    // Return
    return implode(',', $array);
}

echo complicated($str);

答案 1 :(得分:0)

对数组条件使用str_replace。请参阅此函数的“$ search”说明:

正在搜索的值,也称为针。阵列可用于指定多个针。

$str = str_replace(array('<', '>', 'TBI', 'Not Available', ','), '', $str);

并且,要删除所有双空格,请使用preg_replace

$str = preg_replace('/\s+/', ' ', $str);