我有一个params列表,我从一个特定的短代码中获取,供用户提供。
用户输入示例: 这是我的名单:{{names(“John”,“Mike',”O'connor“)}}
由此,我有一个正则表达式来提取params列表,所以我得到一个字符串,如: “约翰”,“迈克”,“奥康纳”
但是现在我需要将这个列表转换为数组,我认为最好的方法是使用json_decode,因为有些用户只是使用单引号,所以可能会破坏。
将此字符串转换为数组的最佳方法是什么? 使用str_replace替换'by'也会破坏'in'O'connor“param。
答案 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]
没有引号的位置。