你必须原谅我,因为我在正则表达式上非常糟糕。
所以这就是我想要做的事情。我正致力于从Google财经API中提取期权链。唯一的问题是Google没有将JSON键包装在引号中,就像它们应该的那样。我发现了一种使用带有正则表达式的替换字符串方法的方法,但它在R中,而我正在使用PHP。
我正在使用的JSON来自here
R:
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它应该有效...... 不太清楚从那里去哪里。如果你可以帮我解决正则表达式,或者帮助我弄清楚为什么它不起作用会很棒。
谢谢!
答案 0 :(得分:0)
preg_replace
中需要分隔符:
$pattern = '~([^,{:]+):~';
$replacement = '"\1":';
$json = preg_replace($pattern, $replacement, $quote);
/
,~
和#
通常用作分隔符,但()
对也可用作分隔符,这就是您收到警告的原因以上。它将最外面的()
对解释为分隔符,最后将:
解释为修饰符(flag)。