I went through a few basics on preg match but its quite difficult when your new to it.
What im trying to do is search for this instance in a string
bug1234
it shouldnt be case sensitive so bug1234 or BuG1234 should work
it must be the word bug followed by any 4 numbers
there should be no spaces or anything in between bug1234 so bug-1234 should not be a match
it should ignore things like bug1234z and abug1234 so it must be bug1234 with nothing prefixing it or coming directly after it unless there is a space between then so “there is a problem with bug1234 that i cant solve” would be a match.
Just to clarify it can be any number not 1234 specifically but they must be 4 digits
Heres my lame attempt:
$file_string = $workdetails->text;
$file_string = strtolower($file_string);
$bugkey = "/bug[0-9]{4}/";
$nosey = preg_match($bugkey, $file_string);
if($nosey !== false)
{
echo "We have a match baby!!"
}
That just seemed to return all sorts, empty string,s string with no mention of the word bug
Try changing the regex to:
The
\bmodifier will only match on a word boundary so that makes sure it doesn’t match things likeabug1234,bug12345orbug1234was bad. I also added theimodifier so it is case insensitive. You no longer need to usestrtolower.Also,
preg_matchtypically returns an integer, and returns(int)0if there is no match. It only returnsFALSEon failure. Therefore you should change the match check to be: