在此先感谢,我觉得我忽略了一些非常简单的事情。我有一些数字邮政编码,我需要通过一个函数运行...但是,我需要验证输入是一个五位数的字符串。但是,无论我如何尝试将数字转换为字符串,它都会失败。我还有其他方法可以编码或格式化吗?:
<?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/>";
?>
答案 0 :(得分:3)
试试这段代码:
echo 07307;
您会发现,直觉上,您会得到结果3783
。这是因为从0
开始的数字被视为八进制,即基数为8.因此,当您将07307
强制转换为字符串时,您将获得"3783"
。如果前导零很重要,那么首先应该使用字符串。
答案 1 :(得分:1)
根据您所说的想要实现,我认为您最好使用is_numeric
和strlen
,因为is_numeric
检查变量是数字还是数字字符串。