PHP цифры в строку для preg_match - PullRequest
1 голос
/ 10 ноября 2011

Заранее спасибо, я чувствую, что пропускаю что-то очень простое. У меня есть несколько числовых почтовых индексов, которые мне нужно выполнить через функцию ... однако мне нужно проверить, что ввод представляет собой строку из пяти цифр. Но, независимо от того, как я пытаюсь привести число к строке, у меня ничего не получается. Есть ли какой-то другой способ, которым я должен кодировать или форматировать?:

<?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 ]

3 голосов
/ 10 ноября 2011

Попробуйте этот код:

echo 07307;

Вы увидите, что вы получите результат 3783.Это потому, что числа, начинающиеся с 0, обрабатываются как восьмеричные, то есть в базе 8. Поэтому, когда вы приводите 07307 к строке, вы получаете "3783".Если начальные нули важны, вы должны использовать строку в первую очередь.

1 голос
/ 10 ноября 2011

Из того, что вы сказали, что хотите достичь, я думаю, вам лучше использовать is_numeric и strlen, так как is_numeric проверяет, является ли переменнаячисло или числовая строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...