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

标签 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 匹配说,但我不知道还能怎么做。

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

最佳答案

您将创建一个正则表达式来匹配您想要的字符串。您必须创建与文字字符串 (.*)([0-9]+) 相匹配的内容。也许是这样的:

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

那么你可以尝试这样做:

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

或者使用$replacements:

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

演示:https://eval.in/435153

关于PHP 用主题字符串中的模式替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634831/

相关文章:

php - 如果图像 'alt' 属性为空,如何替换它?

javascript - 如何使用javascript将p标签替换为br

PHP 动态 preg_replace

php - 如何为对象创建默认值? PHP

php - 如何在 XPath 评估之前处理字符串中的双引号?

c++ - QT中使用贪婪正则表达式删除字符串

javascript - 用表情符号替换字符串的最有效方法

php - 向mysql中插入大数据并带有进度条

php - Zend Guard 与 ionCube

regex - 如何在 Vim 中将逗号分隔的字符串转换为 Cassandra 列表格式?