Filtering out a number at the start of a string which has a certain pattern
I'm trying to filter a number out of a string if that string starts with @. Here's what I thought would do the trick, but it retu开发者_运维技巧rns nothing more than a blank page.
(May contain lots of mistakes as I'm new to 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 @.";
}
?>
What's wrong with my script?
Thanks in advance!
if(substr($String , 0, 1)=="@")
// ^^ 2 equal signs for equality comparison.
BTW your function can be written simply with regex (example). And to get the initial character, use $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.";
}
精彩评论