Я сохранил как | 1 | 7 | 11 | Мне нужно использовать preg_match для проверки | 7 | есть или | 11 | есть и т. д. Как это сделать?PHP Preg_match точное совпадение
3
A
ответ
2
Используйте более быстрый strpos, если вам нужно всего лишь проверить наличие двух чисел.
if(strpos($mystring, '|7|') !== FALSE AND strpos($mystring, '|11|') !== FALSE)
{
// Found them
}
Или используя медленную регулярное выражение, чтобы захватить число
preg_match('/\|(7|11)\|/', $mystring, $match);
Использование regexpal для проверки регулярных выражений бесплатно.
0
Если вы действительно хотите использовать preg_match
(хотя я рекомендую strpos
, как на ответ Xeoncross'), используйте:
if (preg_match('/\|(7|11)\|/', $string))
{
//found
}
0
Предполагая, что ваша строка всегда начинается и заканчивается |
:
strpos($string, '|'.$number.'|'));
17
использования \b
до и после выражения, чтобы соответствовать как целое слово только:
$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
Таким образом, в вашем примере, это будет:
$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
Это также возвращает значение TRUE для чисел, как 17, 27, 71 и 111, 211 и 114, чтобы назвать несколько – Yeroon 2010-11-29 15:22:16
Спасибо, это гораздо более простой способ и работает! – ITg 2010-11-29 15:22:51