Page 1 of 1

preg_match question

Posted: Sun Jun 28, 2009 5:22 pm
by bobb
I am experimenting, and doing the following:

Code: Select all

<?
if(preg_match('_'.preg_quote("Charlotte[/ ]([0-9a-z.]{1,10})", '_').'_', "Mozilla/5.0 (compatible; Charlotte/1.0t; http://www.searchme.com/support/)")) {
 
    echo "<br>A match was found.";
} else {
    echo "<br>A match was not found.";
}
?>
But this returns :A match was not found... How is this possible? I want to have A match was found, but I don't know where my fault is in my code... is it in the

Code: Select all

 
Charlotte[/ ]([0-9a-z.]{1,10})
 

part?

thanks

Re: preg_match question

Posted: Mon Jun 29, 2009 12:56 am
by prometheuzz
bobb wrote:I am experimenting, and doing the following:

Code: Select all

<?
if(preg_match('_'.preg_quote("Charlotte[/ ]([0-9a-z.]{1,10})", '_').'_', "Mozilla/5.0 (compatible; Charlotte/1.0t; http://www.searchme.com/support/)")) {
 
    echo "<br>A match was found.";
} else {
    echo "<br>A match was not found.";
}
?>
But this returns :A match was not found... How is this possible? I want to have A match was found, but I don't know where my fault is in my code... is it in the

Code: Select all

 
Charlotte[/ ]([0-9a-z.]{1,10})
 

part?

thanks
Because there is no sub-string:

Code: Select all

Charlotte[/ ]([0-9a-z.]{1,10})
in your target string (because of the preg_quote(...), the regex meta characters are escaped and loose their special powers, so to speak). In other words, don't use preg_quote(...):

Code: Select all

if(preg_match('_Charlotte[/ ]([0-9a-z.]{1,10})_', "Mozilla/5.0 (compatible; Charlotte/1.0t; http://www.searchme.com/support/)")) {
    echo "<br>A match was found.";
} else {
    echo "<br>A match was not found.";
}