代码之家  ›  专栏  ›  技术社区  ›  Travis

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

  •  1
  • Travis  · 技术社区  · 15 年前

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

    例如:

    • 参数1:“这是我*的*字符串”
    • 论点2:“这是我自己创造的令人敬畏的字符串”
    • 返回:array(“我的厉害”,“我自己创造的”)。

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   Phil Hayward    15 年前

    您可以用一个regex等价物替换通配符,然后运行它通过preg-u匹配。

    因为它听起来确实像家庭作业,我也不会给出任何具体的代码,但我会好好利用 preg_replace (用regex等价物替换通配符)和 preg_match (以构建匹配子字符串的数组)。

        2
  •  2
  •   Jeff Ober    15 年前

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

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