如何识别字符串以PHP中的数值开始和结束

时间:2011-02-20 11:57:56

标签: php

我需要确定一个字符串的开头和结尾是一个数字值和7位长。

允许 - 10004530984567。这两个字符串以数字值开头并以数字值结尾。如果任何字符串以任何字符开头,请说 - a234567而不是显示失败。

请在PHP中建议。

提前致谢

5 个答案:

答案 0 :(得分:8)

你应该可以使用正则表达式:

$count = preg_match ('/^[0-9].{5}[0-9]$/', $value)

这基本上为你提供了每个字符串,它以一个数字开头和结尾,中间任意五个字符。 $count是找到的匹配数,非零意味着匹配。

如果你想要一个不同的模式,只需调整正则表达式。例如,七个字符,所有数字都是'/^[0-9]{7}$/'

请记住,我是老派,仍然使用[0-9]作为数字,因为并非所有正则表达式引擎都支持\d表示法,但PHP应该可以正常使用(例如{{1} })。

答案 1 :(得分:1)

你只想要数字吗?

然后这应该工作

if (preg_match("/^[0-9]{7}$/", $argv[1]))
  {
    echo "Ok";
  }

如果你还想在字符串中有其他可能的值,那么paxdiablo的正则表达式是正确的。

答案 2 :(得分:0)

试试这个

<?php

$string = "984f1a3";

if(strlen($string) <= 7){
    if(!is_numeric(substr($string, 0, 1)) and !is_numeric(substr($string, strlen($string)-1, strlen($string)))) echo "FAIL";
    else echo "Success";
}
else echo "FAIL";

答案 3 :(得分:0)

is_numeric()有轻微的风险。字符串'1e5'在科学记数法中可能表示10000,但它可能不是。

您的问题需要正则表达式。

/[0-9][0-9][0-9][0-9][0-9][0-9][0-9]/

或更简单的

/[0-9]{7}/

答案 4 :(得分:0)

除了使用上述正则表达式的解决方案之外,以下内容也应该完成。我没有测试过它!

$result = TRUE;

if (strlen($string) == 7) { $string_arr = str_split($string); if (!(ctype_digit($string_arr[0]] && ctype_digit($string_arr[6]))) $result = FALSE;
} else $result = FALSE;

返回$ result;