我有一个包含一些HTML和PHP文本的长字符串。在该字符串中,我想搜索所有出现的几个PHP函数调用并获取参数。现在我需要正则表达式的帮助。
要查找的功能:link_to
,link_to_function
和mail_to
。
我未完成的工作副本:
$regexp = '...' // Help here please!
$str = "Bla bla bla <?php echo link_to('Lorem', 'Ipsum') ?> bla bla bla <?php echo link_to_function(\"Lorem2\", \"Ipsum2\") ?> bla bla bla...";
preg_match_all
(
$regexp,
$str,
$matches
);
我希望它返回这样的内容:
$matches = array
(
[0] => array
(
[0] => "link_to('Lorem', 'Ipsum')"
[1] => "link_to_function(\"Lorem2\", \"Ipsum2\")"
)
[1] => array
(
[0] => "Lorem"
[1] => "Lorem2"
)
[2] => array
(
[0] => "Ipsum"
[1] => "Ipsum2"
)
);
正如您所看到的,参数可以被单引号和双引号括起来。参数中应该可以使用所有类型的字符。
还有一件事:每次通话都可以有一个或两个参数。
答案 0 :(得分:0)
我认为您可能需要单独测试一个或两个参数。对于两个参数,你需要这样的东西:
"link_to.*?\(\s*'(.*?)'\,\s*'(.*?)'\s*\)"
如果您认为您可能需要捕获双引号和单引号,请更改为:
"link_to.*?\(\s*['"](.*?)['"]\,\s*['"](.*?)['"]\s*\)"
答案 1 :(得分:0)
试
[a-z_]+\(\s*(?:['"](.*?)['"],?\s*)*\)
并在必要时进行改进,我手头没有PHP ......