过滤掉具有特定模式的字符串开头的数字

时间:2010-08-14 21:17:53

标签: php string filter numbers

如果该字符串以@开头,我正在尝试从字符串中过滤一个数字。 这就是我认为可以做到的伎俩,但它只返回一个空白页面。

(由于我是PHP的新手,可能包含很多错误。)

<?php
$String = "@1234 Hello this is a message.";
$StringLength = 1;
Echo "Filtering the number after the @ out of " .$String;
If (substr($String , 0, 1)="@"){ //If string starts with @
    While (is_int(substr($String,1,$StringLength))){ //Check if the X length string after @ is a number.
            $StringLength=$StringLength+1; //If it was a number, up StringLength by one.
    }
    If ($StringLength >= 2){ //If the number is only 1 character long StringLength will be 2, loop completed once.
        $Number = substr($String,1,$StringLength-1);
        Echo $Number;
    }
    Else{ //The string started with @ but the While has never run because it was false.
        Echo "The @ isn't followed by a number.";
    }
Else{ //If string doesn't start with @
    Echo "String doesn't start with @.";
}
?>

我的剧本出了什么问题?

提前致谢!

1 个答案:

答案 0 :(得分:3)

if(substr($String , 0, 1)=="@")
//                       ^^ 2 equal signs for equality comparison.

顺便说一句,你的函数可以用regex(example)编写。要获得初始字符,请使用$string[0]

if (preg_match('/^@(\\d+)/', $string, $results)) {
   echo $results[1];
} else {
   if ($string[0] != '@')
     echo "String doesn't start with @.";
   else
     echo "The @ isn't followed by a number.";
}