php - 在单数和复数变体中搜索 needle
问题描述
我正在寻找一个好的解决方案来检查一个单词(即使是单数版本)是否存在于特定的字符串中。
例子:
$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
解决方案
您可以使用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';
}
推荐阅读
- c# - 如何投射列表
到列表 使用反射(不使用 Linq Cast<>)? - php - 我怎样才能用作曲家解决这个问题?
- java - 应用程序崩溃原因:java.lang.IllegalStateException:到目前为止没有成功匹配
- loops - Ansible:如何在下一个任务中循环动态主机的注册输出
- reactjs - 无法部署 React 项目。错误是命令失败,退出代码为 1
- javascript - 即使在 TURN 上,Webrtc 也无法连接到不同的网络
- android - 如何在颤动中为另一个页面中的按钮传递 Onpressed 的功能?
- python - 如何使用 tkinter 画布绘制一个完美的正方形?
- javascript - Electron.js 无法通过 jspdf 保存 pdf 文件
- javascript - 日历边框尺寸网格