PHP数字为preg_match的字符串


PHP digits to string for preg_match

提前感谢,我觉得我忽略了一些非常简单的东西。我有一些数字邮政编码,我需要运行一个函数…但是,我需要验证输入是否是一个五位数的字符串。但是,无论我如何尝试将数字转换为字符串,它都失败了。还有其他编码或格式化的方法吗?:

<?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_numericstrlen,因为is_numeric检查一个变量是一个数字还是一个数字字符串。