Как заменить запятые на точку только в цитируемой подстроке? - PullRequest
0 голосов
/ 05 сентября 2018

Предположим, у меня есть строка:

$string =  'apple, cat, dog, "0,445",symphony, "0,454"';

Какой вывод мне нужен:

$string =  'apple, cat, dog, "0.445",symphony, "0.454"';

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Вы можете сделать это, используя preg_replace

$string = preg_replace('/("\d+),(\d+")/','$1.$2',$string);
0 голосов
/ 05 сентября 2018

Попробуйте это регулярное выражение: https://regexr.com/3uvj0

$string = preg_replace('/(\".)(,)(.*\")/', '$1.$3', $string);
0 голосов
/ 05 сентября 2018

Пожалуйста, найдите обходной путь для вашего требования,

$string = 'apple, cat, dog, "0.445",symphony, "0,454"';
$array = str_replace('*comma*', ',', explode(',',preg_replace_callback('|"[^"]+"|', function ($matches) {return str_replace(',', '*comma*', $matches[0]);}, $string)));
foreach ($array as $key => $value) {
    $array[$key] = str_replace(',', '.', $value);
}
$string = implode(",", $array);

Я взял ссылку ссылка . Вот ваш рабочий код .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...