我想给出匹配字符串与通配符*的可能性.

$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 );

}

基本上将*替换为* (考虑在* nix环境*匹配空字符串)©vbence

任何改进/建议?

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

简单的 通配符 组件 ( PHP 5.3+) 该项目旨在为 php 提供一个简单的组件来支持 通配符 通配符 * (零个或多个字符)和 ? (正好一个字符)。 该组件与 文件名 无关。 您也可以将它用于命名空间、url 和其他 字符串 。 为什么你不能为此提供一个简单的功能? 因为效率。 当您创建Pattern类的实例时,您还“编译”了该模式。 这意味着我会尝试为您以后的输入找到最佳的测试方法。 因此,如果您在同一次运行中更频繁地运行相同的模式,则可以从该优化中受益。 如果没有,界面应该仍然足够简单,让您满意。 如果没有,请围绕它包装一个函数。 为什么不直接使用正则表达式? 因为没有理由对最常见的数字使用正则表达式: string * 表示“以”开头。 * string意思是“以”结尾。 所以即使我使用正则表达式来覆盖复杂的模式,对其中之一使用正则表达式也太没有意义了。 在内部,我使用 substr
/ * * * 方法1: 动态规划,令dp[i][j]表示,s[0~i-1] 与 p[0~j-1]是否 匹配 ,对s、p而言,下标从0开始,而dp而言,下标表示第几个字符 * 状态转移方程为: * 1. 当p[j-1]不为" * "时 :当s[i-1] 与 p[j-1]相等 或 p[j-1]是 "?"时, dp[i][j] = dp[i-1][j-1]; * 2. 当p[j-1]为" * "时 : dp[i][j] = dp[i-1][j] || dp[i][j-1] 解析... $a = preg_match('/ph+p/','aaaphhhhhhhhhhpbbbp'); //第一个参数是 匹配 模式 //什么叫 匹配 ,通过模式一个个比过去,注意这里是一个个 echo $a; $a = preg_match('/ph{3}p/','aaaphhh...