PHP Preg_match match exact word
I have stored as |1|7|11| I need开发者_Go百科 to use preg_match to check |7| is there or |11| is there etc, How do I do this?
Use \b
before and after the expression to match it as a whole word only:
$str1 = 'foo bar'; // has matches (foo, bar)
$str2 = 'barman foobar'; // no matches
$test1 = preg_match('/\b(foo|bar)\b/', $str1);
$test2 = preg_match('/\b(foo|bar)\b/', $str2);
var_dump($test1); // 1
var_dump($test2); // 0
So in your example, it would be:
$str1 = '|1|77|111|'; // has matches (1)
$str2 = '|01|77|111|'; // no matches
$test1 = preg_match('/\b(1|7|11)\b/', $str1);
$test2 = preg_match('/\b(1|7|11)\b/', $str2);
var_dump($test1); // 1
var_dump($test2); // 0
Use the faster strpos if you only need to check for the existence of two numbers.
if(strpos($mystring, '|7|') !== FALSE AND strpos($mystring, '|11|') !== FALSE)
{
// Found them
}
Or using slower regex to capture the number
preg_match('/\|(7|11)\|/', $mystring, $match);
Use regexpal to test regexes for free.
Assuming your string always starts and ends with an |
:
strpos($string, '|'.$number.'|'));
If you really want to use preg_match
(even though I recommend strpos
, like on Xeoncross' answer), use this:
if (preg_match('/\|(7|11)\|/', $string))
{
//found
}
精彩评论