我正在尝试制作一个正则表达式,以匹配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)
谢谢。
使用["']和反向引用(\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)
参见演示。
| 归档时间: |
|
| 查看次数: |
9556 次 |
| 最近记录: |