PHP 用主题字符串中的模式替换正则表达式
PHP replace regex with pattern inside subject string
我不太确定标题的措辞,但我正在努力实现以下目标:
$string = 'category/(.*)/page/([0-9]+)'
我需要通过传递参数数组将其转换为 category/test/page/2
,如下所示:
Array
(
[0] => test
[1] => 2
)
执行 $string = preg_replace('#^'.$string.'$#', $replacements, $string)
会导致关于 $replacements
是一个数组的错误,这与 the documentation 所说的相匹配,但是我不确定该怎么做。
我真的无法理解模式和主题以相同的字符串开头。
您将创建一个 new 正则表达式来匹配您想要的字符串。您必须创建与文字字符串 (.*)
和 ([0-9]+)
相匹配的内容。可能是这样的:
/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/
那你可以试试这样做:
$string = preg_replace('/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/', '/test//2', $string);
或使用$replacements
:
$string = preg_replace(
'/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/',
'/'.$replacements[0].'//'.$replacements[1],
$string
);
我不太确定标题的措辞,但我正在努力实现以下目标:
$string = 'category/(.*)/page/([0-9]+)'
我需要通过传递参数数组将其转换为 category/test/page/2
,如下所示:
Array
(
[0] => test
[1] => 2
)
执行 $string = preg_replace('#^'.$string.'$#', $replacements, $string)
会导致关于 $replacements
是一个数组的错误,这与 the documentation 所说的相匹配,但是我不确定该怎么做。
我真的无法理解模式和主题以相同的字符串开头。
您将创建一个 new 正则表达式来匹配您想要的字符串。您必须创建与文字字符串 (.*)
和 ([0-9]+)
相匹配的内容。可能是这样的:
/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/
那你可以试试这样做:
$string = preg_replace('/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/', '/test//2', $string);
或使用$replacements
:
$string = preg_replace(
'/(.+)\/(\(.+\))\/(.+)\/(\(.+\))/',
'/'.$replacements[0].'//'.$replacements[1],
$string
);