今天我遇到了这个问题,如何拆分/区分是str和来自随机输入的int?例如,我的用户可以输入如下: -
我当前的脚本使用substr(input,0,1)来获取str和substr(input,-1)来获取int,但如果输入了案例2,3,4,5或任何内容,它将会出错其他用户输入风格
由于
答案 0 :(得分:8)
list($string, $integer) = sscanf($initialString, '%[A-Z]%d');
答案 1 :(得分:5)
使用如下的正则表达式。
// $input contains the input
if (preg_match("/^([a-zA-Z]+)?([0-9]+)?$/", $input, $hits))
{
// $input had the pattern we were looking for
// $hits[1] is the letters
// $hits[2] holds the numbers
}
表达式将查找以下内容
^ start of line
([a-zA-Z]+)? any letter upper or lowercase
([0-9]+)? any number
$ end of line
(..+)?
其中+
表示“一个或多个”,而?
表示0 or 1 times
。因此,您正在寻找任何长期出现或不出现的行为
答案 2 :(得分:1)
我建议您使用正则表达式来识别和匹配字符串和数字部分:类似
if (!preg_match("/^.*?(\w?).*?([1-9][0-9]*).*$/", $postfield, $parts)) $parts=array();
if (sizeof($parts)==2) {
//$parts[0] has string
//$parts[1] has number
}
将默默忽略invlid部分。您仍然需要验证零件的长度和范围。
答案 3 :(得分:1)
这个怎么样?正则表达式
$str = 'ABC12';
preg_match('/[a-z]+/i', $str, $matches1);
preg_match('/[0-9]+/', $str, $matches2);
print_r($matches1);
print_r($matches2);