2

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

例如:

  • 论据 1:“这是 * 我 * 的字符串”
  • 论点 2:“这是我自己创建的很棒的字符串”
  • 返回:数组(“我的真棒”,“创造了我自己”)

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

4

2 回答 2

2

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

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

于 2009-11-11T02:44:44.133 回答
2

您可以将通配符替换为等效的正则表达式,然后通过 preg_match 运行它。

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

于 2009-11-11T02:59:09.330 回答