我们可以使用Bitwise运算符" |"在php中使用strpos?

时间:2017-04-08 11:23:18

标签: php strpos

我们可以使用Bitwise运算符" |"在php中使用strpos?  我需要检查给定的$ status变量中是否存在 a0,a1,a2,a5 字符串。  我的代码如下所示。仅当状态变量具有值= a0或a1或a2或a5 时,我的代码才会返回值(位置)。当$ status =' a1时,它将返回false测试字符串。

 $status='a1 test string';
 echo strpos("|a0|a1|a2|a5|", $status);

4 个答案:

答案 0 :(得分:1)

你可以像这样使用它。此处|表示or

<?php 
$status='a1 test string';

if(preg_match("/\b(a0|a1|a2|a5)\b/", $status))
{
    echo "Matched";
}

答案 1 :(得分:1)

  

我们可以使用Bitwise运算符&#34; |&#34;用strpos在php?

作为按位运算符| -

作为文字符号| -

答案 2 :(得分:1)

不,你不能。 Documentation没有提到任何类似的东西:

  

strpos - 查找第一次出现的子字符串的位置   一个字符串

     

找到第一次出现needle的数字位置   haystack字符串。

     

<强>参数

     

haystack要搜索的字符串。

     

needle如果needle不是字符串,则将其转换为整数   应用为角色的序数值。

     

offset如果指定,搜索将开始此数量的字符   从字符串的开头算起。如果偏移为负,   搜索将从最后开始计算这些字符数   字符串。

事实上,实现这样的功能没有多大意义,因为你已经拥有一个成熟的regular expression引擎:

$has_substrings = (bool)preg_match('/a0|a1|a2|a5/u', $status);

答案 3 :(得分:0)

单个字符串搜索无法做到这一点。您需要使用可以一次测试多个选项的正则表达式,或者需要迭代搜索项。

Sahil Gulati给出了基于正则表达式方法的简单示例。

这是一种基于迭代的简单方法:

<?php
$status = 'a1 test string';
$search = explode('|', substr("|a0|a1|a2|a5|", 1, -1));
// would be much easier to start with an array of search tokens right away: 
// $search = ['a0', 'a1', 'a2', 'a5'];

$result = false;
array_walk($search, function($token) use ($status, &$result) {
    $result = (FALSE!==strpos($status, $token)) ? true : $result;
});
var_dump($result);