用于解析带参数的方法的正则表达式
Regular expression for parsing methods with arguments
例如我有这个内容:
<?php echo $this->translate("Any text", "Any text next", "base-key") ?> Next string bla bla
string bla <?php echo $this->translate("SO Any text") ?>
enter code heretext bla <?php echo $this->translate("and string", null, "article-key") ?>
因此,我需要一个正则表达式来匹配方法 "translate" 的第一个和第三个参数中引号之间的文本。
输出可能如下所示:
array (
array (
0 => Any text,
1 => base-key
),
array (
0 => SO Any text,
1 => null
),
array (
0 => and string,
1 => article-key
),
)
我正在尝试这个表达式:
/translate\(["\'](.*?)["\']/s
我刚得到第一个参数字符串方法"translate"
在这方面取得了一些成功:translate\(\"?(.*?)\"?(?:,\s?(?:\"?.*?\"?))?(?:,\s?\"?(.*?)\"?)?\)
。按照我写的方式,如果第一个和第三个参数不在引号中,它也会捕获它们,您可以通过删除第一个和第三个参数引号中的 ?
并将第一个参数设为可选来撤消它 - translate\((?:\"(.*?)\")(?:,\s?(?:\"?.*?\"?))?(?:,\s?\"(.*?)\")?\)
可以在这里测试:https://regex101.com/r/kG9eF3/1
例如我有这个内容:
<?php echo $this->translate("Any text", "Any text next", "base-key") ?> Next string bla bla
string bla <?php echo $this->translate("SO Any text") ?>
enter code heretext bla <?php echo $this->translate("and string", null, "article-key") ?>
因此,我需要一个正则表达式来匹配方法 "translate" 的第一个和第三个参数中引号之间的文本。
输出可能如下所示:
array (
array (
0 => Any text,
1 => base-key
),
array (
0 => SO Any text,
1 => null
),
array (
0 => and string,
1 => article-key
),
)
我正在尝试这个表达式:
/translate\(["\'](.*?)["\']/s
我刚得到第一个参数字符串方法"translate"
在这方面取得了一些成功:translate\(\"?(.*?)\"?(?:,\s?(?:\"?.*?\"?))?(?:,\s?\"?(.*?)\"?)?\)
。按照我写的方式,如果第一个和第三个参数不在引号中,它也会捕获它们,您可以通过删除第一个和第三个参数引号中的 ?
并将第一个参数设为可选来撤消它 - translate\((?:\"(.*?)\")(?:,\s?(?:\"?.*?\"?))?(?:,\s?\"(.*?)\")?\)
可以在这里测试:https://regex101.com/r/kG9eF3/1