【问题标题】:PHP String present in any positionPHP字符串出现在任何位置
【发布时间】:2015-04-09 15:23:17
【问题描述】:

在 PHP 中,假设在一个字符串中 $str = "你好吗";

"are" 可以通过 strpos("are",$str); 检测到

如何检索 $str 中存在的“w r y”? (“你在哪里”)

我已经尝试了上述方法。使用像 * 这样的通配符并没有给我想要的结果..

【问题讨论】:

  • 您是否只想知道字符是否存在或是否存在于给定的序列中?
  • if ((strpos('w', $string) !== false) && (strpos('r', $string) !== false) && (strpos('y', $string) !== false)) {....} strpos() 不允许使用通配符
  • 我认为你应该尝试使用正则表达式
  • 但是,fnmatch() 接受通配符:if (fnmatch('*w*r*y*', $string)) {....} 它区分大小写,但 if (fnmatch('*[Ww]*[Rr]*[Yy]*', $string)) {....} 将不区分大小写,if (fnmatch('*w*r*y*', strtolower($string))) {....} 也是如此

标签: php string


【解决方案1】:

使用正则表达式:

if (preg_match('/w.*r.*y/i', $str)) {
    ...
}

这要求它们按特定顺序排列。如果你想以任何顺序匹配它们,它应该是:

if (preg_match('/(?=.*w)(?=.*r)(?=.*y)/', $str)) {

match multiple words in any order with regex

【讨论】:

    猜你喜欢
    • 2023-01-02
    • 2011-01-26
    • 2015-08-05
    • 2015-09-30
    • 1970-01-01
    • 2015-10-05
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多