如何使用数组中的某些值填充模式

时间:2012-08-04 07:07:36

标签: php regex

我有一个uri模式,我想用一些值填充它。 我有这两个变量。

$pattern = "/^(?P<scope>[a-zA-Z]+)\/(?P<node>[a-zA-Z]+)\/(?P<controller>[a-zA-Z]+)\/(?P<action>[a-zA-Z]+)$/";

$replacement = array('scope'=>'Modules', 'node'=>'Index', 'controller'=>'Index', 'action'=>'index');

并且我正在寻找获得此输出的方法:模块/索引/索引/索引

谢谢!

2 个答案:

答案 0 :(得分:1)

$output = substr($pattern, 2, -2);
$output = stripcslashes($output);
foreach ($replacement as $key => $value)
    $output = str_replace("(?P<$key>[a-zA-Z]+)", $value, $output);

答案 1 :(得分:0)

这可能很有用,取决于你的URI,虽然它使用PHP的str_replace而不是正则表达式...

$oldURI  = 'blah/<scope>/<node>/<controller>/<action>/';
$search  = array('<scope>','<node>','<controller>','<action>');
$replace = array('Modules','Index','Index','index');
$newURI  = str_replace($search, $replace, $oldURI);