2011-04-01 87 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"); 

?> 

虽然做法是怪异手头的问题......但是,嘿,可能是真正的问题是别的东西......

相关问题