2009-12-18 86 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