2012-07-19 51 views
0

我正在嘗試修復不贊成的函數eregi_replace()和preg_replace()。eregi_replace to preg_replace

$text = eregi_replace('(((f|ht){1}tp://)[[email protected]:%_+.~#?&//=]+)', '<a target="_blank" class="clickable" href="\1">\1</a>', $text); 

$text = eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_+.~#?&//=]+)', '\1<a target="_blank" class="clickable" href="http://\2">\2</a>', $text); 

我怎樣才能使這些與工作的preg_replace()?我在這裏的方式在我的頭上。

+0

請參閱http://stackoverflow.com/questions/2626079/convert-eregi-replace-to-preg-replace-in-php和http://stackoverflow.com/questions/1818262/converting-an-eregi-更換到一個半固化片替換 – 2012-07-19 11:22:54

回答

0

您只需更改函數的名稱並將您的表達式包裹在分隔符中即可。對於不區分大小寫的功能eregi()eregi_replace(),你把一個i修改的最後一個分隔符之後:

ereg('...', foo) // preg_match('/.../', foo) 
eregi('...', foo) // preg_match('/.../i', foo) 
ereg_replace('...', foo) // preg_replace('/.../', foo) 
eregi_replace('...', foo) // preg_replace('/.../i', foo) 

我在這裏使用的/分隔符,但你需要使用任何分隔符是最有意義的,並沒有按你的表情本身不會出現。

絕大多數(如果不是全部的話)通用表達式都是直接傳輸,不需要轉換。我已經轉換了幾個大型項目,並且從未遇到過必須實際修改表達式的情況,但這並不是說沒有一些差異。