2013-08-29 214 views
0

preg_replace()正在爲以下代碼行返回空字符串。目標是用連字符代替任何不是數字的東西。通過在線測試人員,我相信正則表達式捕獲正確的東西,但由於某種原因,這行總是返回一個空字符串。preg_replace()返回空字符串

preg_last_error()返回無錯誤。有什麼建議麼?

$subRef = preg_replace("/[^(\d)]/g", "-", $subRef); 
+2

啓用'error_reporting(E_ALL);'。它會告訴你你的regex說明符有什麼問題。 – mario

+0

subRef的價值是什麼? – Kieran

+3

在PHP中使用preg \ _match時可能出現[「Unknown modifier'g'in ...」)重複項(http://stackoverflow.com/questions/3578671/unknown-modifier-g-in-when-using- preg-match-in-php) – mario

回答

5

對於人們在谷歌找到這一點,問題是我g標誌。

據我所知,PHP沒有global標誌,因爲您使用的函數決定正則表達式是否是全局的。

對此問題的評價是Mario對問題的評論。

5

嘗試

preg_replace('/\D/', '-', $subRef); 

代替。 \D是「不是一個數字」

php > $foo = 'abc123def'; 
php > echo preg_replace('/\D/', '-', $foo); 
---123--- 
+0

謝謝,沒有意識到\ D,這是一個更乾淨的方式來做我正在做的事情。這是g-modifier引起的問題。不管怎麼說,乾杯! – Chris