2009-12-18 75 views
1

我试图找到正确的正则表达式转换eregi($1,$2)preg_match("/$1/i",$2)正则表达式:从eregi转换PHP代码的preg_match

我需要考虑是否有将在其与功能(),并且它们可能会出现多一次。 任何人都可以提供适当的正则表达式来做到这一点吗?

谢谢

+1

我怀疑我们真的可以帮助很多,而不先看到一些例子。从听起来像,解析器更适合这个任务,但也许你有你想用正则表达式做这件事的理由。但是,我怀疑它不幸是一个简单的插入式替换。 – Dustin 2009-12-18 20:20:40

回答

1

您不想使用正则表达式来解析代码。

您想使用解析器。

+0

我不介意使用解析器,我只想找到一种方法在我的代码中替换另一个函数。我可以使用什么样的解析器以及如何使用? – ufk 2009-12-19 03:36:50

+0

好的..所以php作为一个令牌扩展器,将php代码转换为令牌,并且我可以将其转换回代码。谢谢 – ufk 2009-12-24 12:53:05

1

您是否试图修改源代码,因为eregideprecated?这个正则表达式将做的伎俩:

$source= <<<STR 
eregi(\$1, \$2); 
eregi('hello', 'world'); 
STR; 

$source2= preg_replace("/eregi\(['\"]*([^\'\"),]+)['\"]*,\s*['\"]*([^'\"),]+)['\"]*\)/", 'preg_match("/$1/i", "$2")', $source); 

var_dump($source2); 
+0

不幸的是,这个正则表达式不适用于下面这行代码: 'if(!eregi('Windows 9',php_uname())){' – ufk 2009-12-19 03:36:20