php strpos 函数中的通配符


Wildcards in php's strpos function

我正在寻找一些类似于preg_replacepreg_match中使用的strpos函数的通配符,但我找不到任何通配符,这里有一个想法:

<?php
if (strpos("The black't't'thorse", "black horse") === false)
  echo "Text NOT found.";
else
  echo "Text found.";
?>

这里的结果将是:Text NOT found.

现在我想使用一个通配符来省略空格或水平制表符,如下所示:

<?php
if (strpos("The black't't'thorse", "black/*HERE THE WILDCARD*/horse") === false)
  echo "Text NOT found.";
else
  echo "Text found.";
?>

这里的想法是结果是:Text found.

有谁知道一些事情吗?

strpos() 不匹配模式,如果你想匹配模式,你必须使用 preg_match() 这应该适用于你的情况。

<?php
    if (preg_match('/black['s]+horse/', "The black't't'thorse"))
      echo "Text found.";
    else
      echo "Text not found.";
?>

如果您需要匹配的第一次出现,则可以使用 PREG_OFFSET_CAPTURE 标志:

preg_match('/black'shorse/i', "The black't't'thorse", $matches, PREG_OFFSET_CAPTURE);
var_dump($matches);

将导致

array(1) { [0]=> array(2) { [0]=> string(13) "black horse" [1]=> int(4) } }

其中$matches[0][1]是你的位置