php 字符串与通配符 * 匹配?

2024-07-01

我想提供将字符串与通配符匹配的可能性*.

Example

$mystring = 'dir/folder1/file';
$pattern = 'dir/*/file';

stringMatchWithWildcard($mystring,$pattern);  //> Returns true

示例2:

$mystring = 'string bl#abla;y';
$pattern = 'string*y'; 

stringMatchWithWildcard($mystring,$pattern);  //> Returns true

我想是这样的:

function stringMatch($source,$pattern) {
    $pattern = preg_quote($pattern,'/');        
    $pattern = str_replace( '\*' , '.*?', $pattern);   //> This is the important replace
    return (bool)preg_match( '/^' . $pattern . '$/i' , $source );
}

基本取代* to .*?(考虑到在*nix环境*火柴empty细绳)©vbence

有任何改进/建议吗?

// 添加return (bool)因为 preg_match 返回 int


没有必要preg_match这里。 PHP 有一个通配符比较函数,专门针对这种情况:

fnmatch() http://php.net/fnmatch

And fnmatch('dir/*/file', 'dir/folder1/file')可能已经适合你了。但要注意的是*通配符同样会添加更多斜杠,就像 preg_match 一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 字符串与通配符 * 匹配? 的相关文章

随机推荐

  • CoreGraphics 和 CoreAnimation 有什么不同?

    我正在使用 coregraphics 开发 iphone 游戏 但速度很慢 我无法玩我的游戏 所以 我用谷歌搜索了很多 在谷歌搜索过程中 我发现了以下内容 CoreGraphics CoreAnimation OpenGL ES CALay
  • 查询每组前 N 个代码适用于 MySQL,但适用于 MariaDB,结果不同

    我有一个 SQL 查询 它提取每组的最新 3 条记录 MySQL 的查询结果与 MariaDB 不同 该查询在下面的sqlfiddle中实现 http sqlfiddle com 9 c09fe 2 http sqlfiddle com 9
  • 应用程序大小限制和查找应用程序的大小

    好吧 我读过无数地方说应用程序大小限制是 20 MB 有些说是 50 MB 是哪一个 更重要的是 我当前的应用程序在管理器的存档部分中的 估计应用程序商店大小 为 106 1mb 然而 当我将它分发到一个临时文件时 它会以 ipa 的形式出
  • 使用 FileDialog 打开工作簿并在 Excel VBA 中对其进行操作

    我正在学习如何使用 Excel 宏 我发现了这段代码 Dim fd As Office FileDialog Set fd Application FileDialog msoFileDialogFilePicker With fd All
  • 使用 swift 3.0 编译的模块无法在 Swift 3.0.1 中导入

    我将 Xcode 升级到 8 1 GM 现在收到以下 SwiftyJSON 错误 其他导入的框架似乎也有效 有没有办法强制它在 Swift 3 中工作 直到 SwiftyJSON 升级他们的框架 我使用 Carthage 导入 更新框架 我
  • 应用内购买仍在等待审核

    当我们开发新版本的应用程序时 我们提交了一些应用内购买的新版本 这些内容与旧版本相同 但属于消耗品 因此您可以多次购买 并且还支持折扣 它们被返回的原因是 请与二进制文件一起提交 因此 我们在上传新应用程序版本的二进制文件后再次提交了它们
  • jQuery 可以根据高度选择 div 吗?还是教程错了?

    我正在尝试选择一个div基于其高度 如本教程所示 jQuery 选择 http tutorials jenkov com jquery selection html 我无法让它工作 jsbin 示例 http jsbin com eriqi
  • 向量到元素之间差异矩阵

    给定一个向量 vec lt 1 5 创建矩阵的有效方法是什么 其中向量分量之间的差异显示在矩阵 差异矩阵 中 如果您愿意的话 显然 我可以使用两个 for 循环来完成此操作 但我需要使用更大的数据集来完成此操作 我试图为这个矩阵创建一个术语
  • 列出 AD 用户的组成员身份

    使用以下 Powershell 代码片段 我获取当前用户的组成员身份的名称 groups System Security Principal WindowsIdentity GetCurrent Groups foreach i in gr
  • 当字符串值包含逗号时,JSON.parse 在 Safari 中失败

    我正在构建一个购物车 当按下 购买 按钮时 Web 服务会返回一个 JSON 输出 然后我将其作为字符串保存到 Javascript cookie 中 Web 服务的典型返回可能是 d 58658 id 58658 qty 1 single
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • 当叠加两个相同大小的图像时,其中一个会偏移

    我正在尝试通过将一个图像叠加在另一个图像上来创建图像 该代码有效 但我叠加的图像似乎略有拉伸 我不知道为什么 所以代码只是创建一个空白的红色 24x24 矩形 然后我覆盖一个 24x24 png 文件 如下所示 我期待的是这样的 但我实际上
  • dte.Solution.SolutionBuild.StartupProjects 更改时是否会触发事件?

    我正在构建一个 Visual Studio 2010 插件供我公司内部使用 我想自定义主窗口标题以显示当前启动项目的名称 我可以使用以下代码设置主窗口的标题 DTE d GlobalClass dte2 as DTE IntPtr hWnd
  • WPF ICollectionView 过滤

    我写了一个代码过滤项目在组合框中 我的问题是 你会怎么做 我认为这种带有反射的解决方案可能非常有效slow ICollectionView view CollectionViewSource GetDefaultView newValue
  • 如何将此查询编写为完整联接而不是联合左/右联接?

    这是代码 显示输入和所需的输出 基本上 我正在尝试自我加入 以将经纪人声明的结果与我的内部记录相匹配 所以左边的列是经纪人的列表 右边是我的列表 如果经纪人有仓位 而我没有 则右侧为 NULL 如果我有仓位而经纪商没有 则左侧为 NULL
  • 如何在知道其十进制值的情况下找出菜单中项目的字符串 ID?

    我正在使用 android support v7 appcompat 在一个活动中 我想在操作栏中显示后退按钮 我愿意 public class News extends ActionBarActivity Override protect
  • 无法在 BeautifulSoup 中获得正确的链接

    我正在尝试解析一些 HTML 并且想提取与特定模式匹配的链接 我正在使用find使用正则表达式的方法 但它没有给我正确的链接 这是我的片段 有人可以告诉我我做错了什么吗 from BeautifulSoup import Beautiful
  • 使用 Kotlin 在 Android 中渲染 PDF

    我已经在使用 Java 的 PDF 上看到了该线程 但找不到任何有关如何使用 Kotlin 执行此操作的信息 有什么方法或者我需要使用Java吗 在 Android 上使用 Java 渲染 PDF 文件 https stackoverflo
  • 构建警告会影响 iOS 应用商店审批流程吗?

    当应用程序正在经历应用程序商店审批流程时 Apple 的人员会检查项目中的警告 还是只检查错误 例如我的很多 NIB 文件上都有这样的警告 不支持的配置 设置了标题但使用系统标识符 这些属性是互斥的 标题将被忽略 这会成为 Apple 拒绝
  • php 字符串与通配符 * 匹配?

    我想提供将字符串与通配符匹配的可能性 Example mystring dir folder1 file pattern dir file stringMatchWithWildcard mystring pattern gt Return