【发布时间】:2011-10-27 14:04:29
【问题描述】:
我正在尝试从正则表达式创建一个字符串。我注意到在 Kohana 框架的路由系统中,您可以使用类似于正则表达式的方式设置路由。然后,您可以创建一个与您设置的路由匹配的 url。我正在尝试做类似的事情,但我找不到一个干净的方法来做到这一点。例如,我有以下正则表达式:
/^(?<application>\w+)\/(?<controller>\w+)\/(?<method>\w+)\/(?<parameters>\w+)\/?$/
现在我想说“应用程序”等于“a”,“控制器”等于“b”,“方法”等于“c”,“参数”等于“d”。然后我应该得到一个字符串,用指定的值替换部分。不过,我找不到这样做的好方法。我基本上想到了两种方法:1)用指定的值替换正则表达式中的相应值,或者 2)创建一个自定义的“正则表达式语法”,您可以轻松地使用它来创建字符串并将其转换为“适当的" 需要时的正则表达式。 Kohana 使用后者,但两种方式对我来说听起来都很糟糕。你会怎么做呢?
编辑:我会尝试澄清一下。例如,我使用preg_match() 将以下字符串传递给上面显示的正则表达式:“myApplication/myController/myMethod/myParameters”。这将返回一个包含几个项目的数组,其中包括 4 个项目,其索引为“应用程序”、“控制器”、“方法”和“参数”以及相应的值。现在我必须使用正则表达式的模式创建字符串“myApplication/myController/myMethod/myParameters”,而我只有包含 4 个项目的数组。如何使用 PHP 做到这一点?
【问题讨论】:
-
这个不清楚。你能举一个输入字符串和相应输出字符串的例子吗?
-
我对 php 和正则表达式非常熟悉,但是我不知道你在问什么。你的问题对我来说零意义,我建议你从头开始编辑你的问题。但谁知道呢,也许别人明白。
-
@Oli Charlesworth, Gerry:我知道这可能很难理解,我自己解释时遇到了麻烦……我添加了一些文字,希望现在更清楚。
-
@Frog:你的问题现在只是稍微清楚了一点。一般规则是“xyz”->“myXyz”吗?
-
感谢@Oli Charlesworth 的回复!不,这不是我真正的意思。我必须创建一个与正则表达式中的模式相对应的字符串,并将数组中的值填充到命名组中。我基本上必须做相反的操作:我已经有了正则表达式和值,现在我必须在正则表达式中填写值,所以我得到一个字符串,当传递给
preg_match()时,正则表达式返回相同价值观。我自己解释了吗?