Вы должны будете простить меня, потому что я плохо себя чувствую при регулярном выражении.
Итак, вот что я пытаюсь сделать. Я работаю над выделением Option Chains из API Google Finance. Единственная проблема заключается в том, что Google не переносит ключи JSON в кавычки, как они должны быть. Я нашел метод использования метода replace string с помощью регулярного выражения, но он находится в R, и я работаю с PHP.
JSON, с которым я работаю, отсюда
Р:
gsub('([^,{:]+):', '"\1":', json)
PHP:
$pattern = '([^,{:]+):';
$replacement = '"\1":';
$json = preg_replace($pattern, $replacement, $quote);
Я попробовал код PHP, который был показан выше, и я получаю:
[18-Jan-2015 21:34:36 America/Denver] PHP Warning: preg_replace(): Unknown modifier ':' in /home1/oldpizza/public_html/austingregory/stocks/index.php on line 10
Я уверен, что это разница между шаблонами регулярных выражений PHP и R, но я не уверен в различии, поскольку я все еще очень новичок в регулярном выражении. Но согласно regex101, он должен работать... Не совсем уверен, куда идти оттуда. Если бы вы могли помочь мне с регулярным выражением или помочь мне понять, почему он не работает, это было бы здорово.
Спасибо!
В preg_replace
требуется preg_replace
:
$pattern = '~([^,{:]+):~';
$replacement = '"\1":';
$json = preg_replace($pattern, $replacement, $quote);
/
, ~
и #
обычно используются как разделитель, но ()
пара также может использоваться как разделитель, и именно по этой причине вы получили предупреждение выше. Он интерпретирует внешнюю пару ()
как разделитель и :
в конце как модификатор (флаг).