提前感谢,我觉得我忽略了一些非常简单的东西。我有一些数字邮政编码,我需要运行一个函数…但是,我需要验证输入是否是一个五位数的字符串。但是,无论我如何尝试将数字转换为字符串,它都失败了。还有其他编码或格式化的方法吗?:
<?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/>";
?>
试试下面的代码:
echo 07307;
你会发现,与直觉相反,你得到的结果是3783
。这是因为以0
开头的数字被视为八进制,即以8为基数。所以当你将07307
转换为字符串时,你得到"3783"
。如果前导零很重要,您应该首先使用字符串。
从你说你想要实现的,我认为你最好使用is_numeric
和strlen
,因为is_numeric
检查一个变量是一个数字还是一个数字字符串。