正则表达式用于PHP中的双引号和单引号

mar*_*rxo 2 php regex quotes

我正在尝试制作一个正则表达式,以匹配PHP中函数的参数。唯一的问题是正则表达式无法正常工作,或者我不能很好地进行转义,因为我需要同时使用双引号和单引号进行匹配,具体取决于开发人员在代码中使用的内容。

fn_name("string");
fn_name('string');
Run Code Online (Sandbox Code Playgroud)

我做了两个表达式,每种情况一个,但是我想可以做得更好。

/fn_name\("(.*?)\"\)/
/fn_name\('(.*?)\'\)/
Run Code Online (Sandbox Code Playgroud)

我该如何做一个正则表达式,并从中正确地逃脱呢?

preg_match_all('/fn_name\("(.*?)\"\)/', file_get_contents($filename), $out);
Run Code Online (Sandbox Code Playgroud)

谢谢。

fal*_*tru 5

使用["']和反向引用(\1):

preg_match_all('/fn_name\((["\'])(.*?)\1\)/', "fn_name('string');", $out);
preg_match_all('/fn_name\((["\'])(.*?)\1\)/', 'fn_name("string");', $out);
Run Code Online (Sandbox Code Playgroud)

参见演示