2011-04-01 86 views
-4

我正在嘗試使用一系列數字匹配數組中的數字,我被告知要使用preg_match。不幸的是,我不擅長正則表達式。有什麼建議麼?有人可以幫我解密這個功能嗎?

<?php 

$range = range(89000000,89499999); 
foreach($range as $number) 
{ 

    if (preg_match("/89304043/", $number)) 
    { 
     die("Valid carrier Number"); 
    } 
    else 
    { 
     die("Invalid carrier Number"); 
    } 


} 
?> 
+2

是您的大寫鎖定壞了嗎? – 2011-04-01 01:31:34

+1

'$ range = range(89000000,89499999)' - ouch。 – Jon 2011-04-01 01:32:09

+1

這是一個o f我在一段時間看到的更加痛苦的代碼段。 – Wiseguy 2011-04-01 01:53:30

回答

0
$number=(int)$number; 
$valid=($number>=89000000 && $number<=89499999); 

$valid現在是真或假。我強制轉換,以確保它是一個整數的數量(我假設有在它沒有非數字字符。

+0

非常感謝你,這個選項實際上是最好的方式! – Bruce 2011-04-01 02:51:47

0
function myrange() { 
    if($number > 89000000 && $number < 89499999) { 
    echo 'Number is between range'; 
    } 
} 
0

你的foreach將只執行一次,它會在0.89死...死無效應該是foreach循環之後。

<?php 

$range = range(89000000,89499999); 
foreach($range as $number) 
{ 
    if (preg_match("/89304043/", $number)) 
    { 
     die("Valid carrier Number"); 
    } 
} 
// If we're here - the number is invalid, as we've not "died" yet 
die("Invalid carrier Number"); 

?> 

雖然做法是怪異手頭的問題......但是,嘿,可能是真正的問題是別的東西......

相關問題