用于preg_match的PHP数字字符串

时间:2011-11-10 18:39:08

标签: php regex casting

在此先感谢,我觉得我忽略了一些非常简单的事情。我有一些数字邮政编码,我需要通过一个函数运行...但是,我需要验证输入是一个五位数的字符串。但是,无论我如何尝试将数字转换为字符串,它都会失败。我还有其他方法可以编码或格式化吗?:

<?php
$code=07307;
$wrapped_code='07307';
$castcode=(string)$code;
$strcode=''.$code;

echo (preg_match('/^\d{5}$/', $code))?'success with code<br/>':'code failed, saw:'.$code."<br/>";
echo (preg_match('/^\d{5}$/', $wrapped_code))?'success with wrapped_code<br/>':'wrapped_code failed, saw:'.$wrapped_code."<br/>";
echo (preg_match('/^\d{5}$/', $castcode))?'success with castcode<br/>':'castcode failed, saw:'.$castcode."<br/>";
echo (preg_match('/^\d{5}$/', $strcode))?'success with strcode<br/>':'strcode failed, saw:'.$strcode."<br/>";
?>

2 个答案:

答案 0 :(得分:3)

试试这段代码:

echo 07307;

您会发现,直觉上,您会得到结果3783。这是因为从0开始的数字被视为八进制,即基数为8.因此,当您将07307强制转换为字符串时,您将获得"3783"。如果前导零很重要,那么首先应该使用字符串。

答案 1 :(得分:1)

根据您所说的想要实现,我认为您最好使用is_numericstrlen,因为is_numeric检查变量是数字还是数字字符串。