搜索单数和复数形式的针

时间:2019-08-07 08:10:08

标签: php regex

我正在寻找一种好的解决方案来检查特定字符串中是否存在一个单词(即使是单数形式)。

示例:

$search = 'users';

$array = [
    'index-users',
    'view-users',
    'create-users',
    'index-user-roles',
    'view-user-roles',
    'create-user-roles',
    'index-todos',
    'view-todos',
    'create-todos',
    'index-attributes',
    'view-attributes',
    'create-attributes',
];

我希望此处users的检查结果为true

即使在此示例中(单数),结果也应为true

<?php

$search = 'users';

$array = [
    'view-user-roles',
    'create-user-roles',
    'index-todos',
    'view-todos',
    'create-todos',
    'index-attributes',
    'view-attributes',
    'create-attributes',
];

我考虑过使用正则表达式,但是我的技能不足以覆盖复数和单数变体。

我尝试了

\b(\w*users\w*)\b

,但这不涵盖单数形式。我添加了一个简短的示例:https://www.regextester.com/?fam=110732

1 个答案:

答案 0 :(得分:1)

您可以使用preg_grep()

来实现类似目的
$array = [
        'index-users',
        'view-users',
        'create-users',
        'index-user-roles',
        'view-user-roles',
        'create-user-roles',
        'index-todos',
        'view-todos',
        'create-todos',
        'index-attributes',
        'view-attributes',
        'create-attributes',
];

$search = 'use'; 

$result = preg_grep('~' . $search . '~', $array);
if (!empty($result)){
   var_dump($result);
} else {
  echo 'No match found';
}