获取与PHP中的通配符匹配的字符串

时间:2009-11-11 02:38:18

标签: php regex pattern-matching wildcard

我需要一个非常具体的PHP函数。基本上,我有两个字符串作为参数,其中一个是包含可变长度(*)的通配符的模式,其中一个是匹配该模式的字符串。我需要从后一个字符串中获取一个字符串数组,以填充模式中的通配符。

例如:

  • 参数1:“这是我*的字符串”
  • 参数2:“这是我自己制作的令人敬畏的字符串”
  • 返回:数组(“我很棒”,“自己创造”)

最干净的方法是什么?请记住,这些并不总是英文单词串,如示例中所示,它们可以是任意随机字符。

2 个答案:

答案 0 :(得分:2)

听起来像是家庭作业。这是一个没有任何实际代码的演练:

将模式标记为字符串和通配符。迭代令牌;每次目标字符串以常规(字符串,非通配符)标记开头时,请关闭该字符串。每次遇到通配符令牌时,找到字符串中下一个令牌的索引并修剪到该索引。存储它。如果在任何时候没有匹配,则返回false。如果在模式完成之前遇到字符串的结尾,则返回false。如果最终标记是通配符,则保存字符串的其余部分。

答案 1 :(得分:2)

您可以使用正则表达式等效替换通配符,并通过preg_match运行。

因为它确实听起来像家庭作业,我也不会给出任何特定的代码,但我会好好利用preg_replace(用正则表达式替换通配符)和preg_match(构建匹配子串的数组。)