我不太确定如何表达标题,但我正在努力实现以下目标:
$string = 'category/(.*)/page/([0-9]+)'
我需要将其转换为 category/test/page/2
通过传递参数数组,如下所示:
Array
(
[0] => test
[1] => 2
)
执行 $string = preg_replace('#^'.$string.'$#', $replacements, $string)
会导致关于 $replacements
的错误一个数组,与 the documentation 匹配说,但我不知道还能怎么做。
我无法真正理解该模式,并且主题以相同的字符串开头。
最佳答案
您将创建一个新正则表达式来匹配您想要的字符串。您必须创建与文字字符串 (.*)
和 ([0-9]+)
相匹配的内容。也许是这样的:
/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/
那么你可以尝试这样做:
$string = preg_replace('/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/', '$1/test/$3/2', $string);
或者使用$replacements
:
$string = preg_replace(
'/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/',
'$1/'.$replacements[0].'/$3/'.$replacements[1],
$string
);
关于PHP 用主题字符串中的模式替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634831/