Несколько найти и заменить в php
У меня есть строка, как показано ниже
$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
Мне нужно сделать следующее
- Удалить "<" и ">"
- Удалить TBI
- Удалить поле "Недоступно"
- сохранять
sn
(т.е. 444970836741) - сохранить сумму, но удалить запятую из суммы (900000.00)
- сохранить дату начала и дату окончания (как 31/12/13) 6.
Я пробовал с str_replace
но действительно больно удалять все пробелы и ненужные символы. Это можно сделать на PHP?
2 ответа
strcspn
, preg_replace
а также 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";
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);
Используйте str_replace с условием массива. Смотрите описание "$search" для этой функции:
Искомое значение, иначе называемое иглой. Массив может быть использован для обозначения нескольких игл.
$str = str_replace(array('<', '>', 'TBI', 'Not Available', ','), '', $str);
И, чтобы удалить все двойные пробелы, используйте preg_replace
$str = preg_replace('/\s+/', ' ', $str);