У меня есть строкаУдалить запятую внутри строки в кавычках в запятую
$str = '1,2,3,4,5,"6,000",7,8,9';
Как я могу очистить его до:
'1,2,3,4,5,6000,7,8,9'
У меня есть строкаУдалить запятую внутри строки в кавычках в запятую
$str = '1,2,3,4,5,"6,000",7,8,9';
Как я могу очистить его до:
'1,2,3,4,5,6000,7,8,9'
Попробуйте что-то вроде этого (для PHP < 5.3):
$dst = array();
$str = '1,2,3,4,5,"6,000",7,8,9';
$state = false;
$buffer = '';
for ($i = 0, $lim = strlen($str); $i < $lim; $i += 1) {
$char = $str[$i];
switch ($char) {
case ',':
if (!$state) {
$dst[] = $buffer;
$buffer = '';
}
break;
case '"':
$state = !$state;
break;
default:
$buffer .= $char;
}
}
$dst[] = $buffer;
print_r($dst);
Это работает как волшебство, спасибо Йоши. также спасибо за Satya и KingCrunch. – naboen
$items = str_getcsv($str);
$items = array_map (
function ($item) { str_replace(',', '', $item); },
$items;
);
Теперь если вы как вы можете объединить их снова
$str = implode(',', $items);
Кажется, что функция str_getcsv() работает только на PHP 5.3.0 или выше, im все еще использует 5.2.6, необходимо сначала обновить мою установку php – naboen
Да, вам нужно. 5.3 - почти 3 года, а 5.4 - в течение нескольких недель. – KingCrunch
Используйте это:
$str = '1,2,3,4,5,"6,000",7,8,9';
$pattern='/"(\d+),(\d+)"/';
$replacement='${1}$2';
echo preg_replace($pattern, $replacement, $str);
Спасибо :-)
str_replace (найти, заменить строку , count) – Satya
@Satya Вы можете показать в качестве примера, что удаляет запятую внутри кавычек, но _not_ те, что находятся за пределами – KingCrunch