2012-02-09 69 views
1

可能重複:
Function ereg_replace() is deprecated - How to clear this bug?PHP額日格和預浸

我有這樣的腳本下載的PHP類

ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3); 

現在拋出錯誤棄用的功能。

我該如何將它替換爲preg或preg匹配所有?

+0

使用,以取代HTML標籤 – niksmac 2012-02-09 10:15:24

+0

改變這一額日格( '^([^ =] *)=「\']?([^ 」\「] *)[」 \ '] $', $ v,$ a3);至 preg_match(「/ ^([^ =] *)= [」\']?([^'\'] *)[「\']?$ /」,$ v, $ A3); – 2012-02-09 10:17:25

回答

1

嘗試:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3); 

是非常相似的。 PREG包含模式內的標誌,EREG不包含。由於這個原因,PREG在模式的開頭和結尾需要一個分隔符char(我使用/)。事實上,PREG搜索模式後的標誌,例如,有一個區分大小寫的匹配您添加i標誌:

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/i', $v, $a3); 
1

最大的區別是,正則表達式需要從某個字符開始,並以此結束。所以如果你用/或#開始和結束正則表達式,你應該沒問題。從外觀上看,我沒有看到任何不相容的東西。試一試。

0

考慮使用back references。您的表情將匹配foo="bar',但不匹配foo="bar'baz"

#^([^=]*)=(["\']?)([^\2]*)\2$#