2010-04-30 14 views
1

試圖取代信用卡號碼與X的第一個12位數字的文本預測的BLOB包含字符串:易正則表達式的問題

信用卡號碼:1234123412341234

這是我的PHP函數:

preg_replace('/Credit Card Number: ([0-9]{12})/','Credit Card Number: XXXXXXXXXXXX',$str); 

幫助?

回答

1

愚蠢的問題:你正在將返回值分配回$str對不對?

$str = preg_replace('/(Credit Card Number: [0-9]{12}/','Credit Card Number: XXXXXXXXXXXX',$str); 
+0

就是這樣!感謝百萬。 – Aaron 2010-04-30 19:34:17

+0

I lol'd。有時也發生在我身上:( – 2010-04-30 19:40:53

+0

其實KennyTM先問同樣的問題+1。猜猜我是幸運:) – publicRavi 2010-04-30 19:43:52

2

我沒看到有什麼問題。也許你忘了分配結果?

$str = preg_replace('/Credit Card Number: [0-9]{12}/','Credit Card Number: XXXXXXXXXXXX',$str); 

此外,如果不需要它,則不需要在([0-9]{12})附近進行捕獲。

+0

我之所以這樣做,是因爲它連續16次查找「信用卡號碼:1」,而不是16次排在第16位。換句話說,它匹配整個模式16次。 現在的問題是沒有匹配。 :( – Aaron 2010-04-30 19:31:50

+0

@Aaron:那麼你有一些錯位的括號,'{12}'只適用於它之前的模式,即'[0-9]',而不是整個模式,除非你寫'/(信用卡號碼:[0-9]){12} /'。 – kennytm 2010-04-30 19:33:57