PHP用主题字符串中的模式替换正则表达式

时间:2015-09-17 15:54:44

标签: php regex preg-replace

我不确定如何说出标题,但我正在努力实现以下目标:

$string = 'category/(.*)/page/([0-9]+)'我需要通过传递一系列参数将其转换为category/test/page/2

Array
(
    [0] => test
    [1] => 2
)

执行$string = preg_replace('#^'.$string.'$#', $replacements, $string)会导致$replacements成为数组的错误,与the documentation所说的匹配,但我不确定该怎么做。

我无法真正理解模式并且主题开始相同的字符串。

1 个答案:

答案 0 :(得分:2)

你可以制作一个 new 正则表达式来匹配你想要的字符串。您必须制作与文字字符串(.*)([0-9]+)匹配的内容。这样的事情,也许是:

/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/

然后你可以尝试这样做:

$string = preg_replace('/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/', '$1/test/$3/2', $string);

或使用$replacements

$string = preg_replace(
    '/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/',
    '$1/'.$replacements[0].'/$3/'.$replacements[1],
    $string
);

DEMO:https://eval.in/435153