Я могу придумать два решения.Первым, который я не буду писать, будет декодировать JSON с использованием json_decode
, исправить значения, разобрав их в целые числа, и перекодировать строку.
Второе - продолжитьвниз по твоему пути.Тем не менее, JSON является довольно сложной строкой и не может быть надежно проанализирован с помощью регулярного выражения.Если вы уверены, что шаблон "natural_order":"value"
не будет отображаться где-то еще, вы можете попробовать это:
$result = preg_replace('/"natural_order"\s*\:\s*"([-+]?[0-9]*\.?[0-9]+)"/', '"natural_order":$1', $string);
Это должно соответствовать любому инкапсулированному ключу, за которым следует двоеточие, за которым следует инкапсулированный действительный плавающийномер точки.Также возможны побеги на случай, если вокруг двоеточия есть пробелы.