0

我有一个包含一些 HTML 和 PHP 文本的长字符串。在该字符串中,我想搜索所有出现的几个 PHP 函数调用并获取参数。现在我需要正则表达式的帮助。

要查找的函数link_tolink_to_functionmail_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"
  )
);

如您所见,参数可以用单引号和双引号括起来。参数中应该可以使用所有类型的字符。

还有一件事:每个调用都可以有一个两个参数。

4

2 回答 2

0

我认为您可能必须单独测试一个或两个参数。对于两个参数,您需要这样的东西:

"link_to.*?\(\s*'(.*?)'\,\s*'(.*?)'\s*\)"

如果您认为您可能需要捕获双引号和单引号,请更改为:

"link_to.*?\(\s*['"](.*?)['"]\,\s*['"](.*?)['"]\s*\)"
于 2012-07-15T16:37:51.640 回答
0

尝试

[a-z_]+\(\s*(?:['"](.*?)['"],?\s*)*\)

并在必要时进行改进,我手头没有 php...

于 2012-07-15T21:29:32.780 回答