2011-11-14 50 views
0

我正試圖以支付網關支持時,此錯誤消息出現:功能eregi_replace()已過時

Message: Function eregi_replace() is deprecated 
Message: Function eregi_replace() is deprecated 

這是它與在支付網關

 $response = eregi_replace ("[[:space:]]+", " ", $response); 
     $response = eregi_replace ("[\n\r]", "", $response); 

代碼解決這個錯誤的任何幫助都會很棒!

+0

quadrizillion重複:http://stackoverflow.com/search?q=eregi+is+deprecated – Gordon

回答

4

當一個函數被棄用時,這意味着它不再被支持,並且它的使用是不鼓勵的。實際上,所有eregi函數都已棄用。

您應該嘗試其他功能,例如preg_replace()。這可能意味着你必須編輯你的正則表達式。

這應該工作

$response = preg_replace ("/\s+/", " ", $response); 
$response = preg_replace ("/[\r\n]/", "", $response); 
+0

所有preg_replace導致消息:simplexml_load_string()[function.simplexml-load-string]:實體:行1:解析器警告:xmlParsePITarget:無效的名稱前綴'xml'錯誤 –

+1

在您的第一個替換中,您應該離開一個空間作爲替代.. – SERPRO

+0

非常感謝您的協助 –

1

更改這些行

$response = preg_replace ("~[ ]+~", " ", $response); 
$response = str_replace (array("\n", "\r"), "", $response); 

其使用str_replace & preg_replace,非廢棄的函數。

+0

如果有一排3位? – Marcus

+0

對於第一個我認爲他這麼做的,因爲你只能刪除雙倍空間..但如果有三個呢? – SERPRO

+0

完美的作品,非常感謝。 –

0

更改這些行

$response = preg_replace ("/[[:space:]]+/", " ", $response); 
$response = preg_replace ("/[\n\r]/", "", $response); 

其使用PCRE,優選的發動機和EREG已棄用的原因。

0

此代碼將該項工作:

$response = preg_replace("#[\r\n]#", "", $response); 
$response = preg_replace("#\s+#m", "$1", $response);