2012-08-23 54 views
0

我想從數字像569048004801. 我使用PHP對於這樣的字符串和方法排除preg_match_all一些模式的例子我試圖像4800特定號碼:PHP preg_match_all沒有具體的數字

/([^4])([^8])([^0])([^0])/i 
/([^4800])/i 
+0

strpos信息'[^ 4800]'是一樣的作爲'[^ 480]'並且意味着「在任何特定的單一點上,不允許有4,8或0.」/ i「也是沒有意義的,沒有大寫字母的那種東西 –

回答

1
/([^4])([^8])([^0])([^0])/i 

這實際上說,的四個字符序列,是不是 「4800」。關。

/([^4800])/i 

這實際上說,單個字符不是 '4', '8',或 '0'

假設你的意思是捕捉一個數字,不包含「4800」在裏面,我覺得你可能要

/(?!\d*4800)\d+/i 

此說,檢查第一,我們不是在看一串在某些地方有「4800」的數字,並且假設情況是這樣,捕獲數字字符串。這就是所謂的「負視向斷言」。

2

如果你的意思是,你只是想從一個字符串中刪除4800,這是一個str_replace簡單:

$str = '569048004801'; 
$str = str_replace('4800', '', $str); 

在另一方面,如果你的意思是你想知道的數字的特定字符串包含4800,這將測試你:

$str = '569048004801'; 

if (preg_match_all('/4800/', $str) > 0) { 
    echo 'String contains 4800.'; 
} else { 
    echo 'String does not contain 4800.'; 
} 
3

如果你只是想看看,如果字符串包含4800,你不需要正則表達式:

<?php 

$string = '569048004801'; 

if(strpos($string,'4800') === false){ 
    echo '4800 was not found in the string'; 
} 
else{ 
    echo '4800 was found in the string'; 
} 

更多有關documentation here

+0

+1簡單 –