如何使PHP json_decode接受单引号中的参数?

时间:2017-12-13 11:51:39

标签: php arrays json

我有一个params列表,我从一个特定的短代码中获取,供用户提供。

用户输入示例: 这是我的名单:{{names(“John”,“Mike',”O'connor“)}}

由此,我有一个正则表达式来提取params列表,所以我得到一个字符串,如: “约翰”,“迈克”,“奥康纳”

但是现在我需要将这个列表转换为数组,我认为最好的方法是使用json_decode,因为有些用户只是使用单引号,所以可能会破坏。

将此字符串转换为数组的最佳方法是什么? 使用str_replace替换'by'也会破坏'in'O'connor“param。

1 个答案:

答案 0 :(得分:1)

如何使用下面的正则表达式提取名称?

$re = '/(["\'])((?:(?!\1).)*)\1/';
$str = '{{names("John", \'Mike\', "O\'connor")}}';

preg_match_all($re, $str, $matches, PREG_PATTERN_ORDER, 0);

// Print the entire match result
var_dump($matches);

输出:

array (size=3)
  0 => 
    array (size=3)
      0 => string '"John"' (length=6)
      1 => string ''Mike'' (length=6)
      2 => string '"O'connor"' (length=10)
  1 => 
    array (size=3)
      0 => string '"' (length=1)
      1 => string ''' (length=1)
      2 => string '"' (length=1)
  2 => 
    array (size=3)
      0 => string 'John' (length=4)
      1 => string 'Mike' (length=4)
      2 => string 'O'connor' (length=8)

这些名称位于$matches[0]的引号或$matches[2]没有引号的位置。