2012-04-19 6 views
1

У меня есть строкаУдалить запятую внутри строки в кавычках в запятую

$str = '1,2,3,4,5,"6,000",7,8,9'; 

Как я могу очистить его до:

'1,2,3,4,5,6000,7,8,9' 
+0

str_replace (найти, заменить строку , count) – Satya

+1

@Satya Вы можете показать в качестве примера, что удаляет запятую внутри кавычек, но _not_ те, что находятся за пределами – KingCrunch

ответ

0

Попробуйте что-то вроде этого (для 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); 
+0

Это работает как волшебство, спасибо Йоши. также спасибо за Satya и KingCrunch. – naboen

3

http://php.net/str-getcsv

$items = str_getcsv($str); 
$items = array_map (
    function ($item) { str_replace(',', '', $item); }, 
    $items; 
); 

Теперь если вы как вы можете объединить их снова

$str = implode(',', $items); 
+0

Кажется, что функция str_getcsv() работает только на PHP 5.3.0 или выше, im все еще использует 5.2.6, необходимо сначала обновить мою установку php – naboen

+1

Да, вам нужно. 5.3 - почти 3 года, а 5.4 - в течение нескольких недель. – KingCrunch

-1
<?php 
$str = '1,2,3,4,5,"6,000",7,8,9'; 
echo $str; 
echo str_replace('"','',$str); 
?> 
+0

выходы '1,2,3,4,5,6,000,7,8,9'. Не совсем то, о чем просили, не так ли? – Yoshi

+0

Я так думаю, Ёси, будем ждать ответа, чтобы ответить – Satya

0

Используйте это:

$str = '1,2,3,4,5,"6,000",7,8,9'; 
$pattern='/"(\d+),(\d+)"/'; 
$replacement='${1}$2'; 

echo preg_replace($pattern, $replacement, $str); 

Спасибо :-)

Смежные вопросы