匹配一串用竖线分隔、用竖线包裹的整数字符串中的两个整数之一

发布于 2024-10-04 23:44:12 字数 140 浏览 3 评论 0原文

我已存储为 |1|7|11|

我需要使用 preg_match(( 来检查 |7| 是否存在或 |11| 是否存在等。

我该怎么做?

I have stored as |1|7|11|.

I need to use preg_match(( to check |7| is there or |11| is there etc.

How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ヅ她的身影、若隐若现 2024-10-11 23:44:12

在表达式前后使用 \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

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
因为看清所以看轻 2024-10-11 23:44:12

如果您只需要检查两个数字是否存在,请使用更快的 strpos

if(strpos($mystring, '|7|') !== FALSE AND strpos($mystring, '|11|') !== FALSE)
{
    // Found them
}

或者使用较慢的正则表达式来捕获数字

preg_match('/\|(7|11)\|/', $mystring, $match);

使用 regexpal 免费测试正则表达式。

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.

撩人痒 2024-10-11 23:44:12

假设您的字符串始终以 | 开头和结尾:

strpos($string, '|'.$number.'|'));

Assuming your string always starts and ends with an | :

strpos($string, '|'.$number.'|'));
污味仙女 2024-10-11 23:44:12

如果您确实想使用 preg_match (尽管我推荐 strpos,就像 Xeoncross 的答案一样),请使用以下命令:

if (preg_match('/\|(7|11)\|/', $string))
{
    //found
}

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文