Php 如何使用preg_replace替换url中标题周围的文本?

Php 如何使用preg_replace替换url中标题周围的文本?,php,regex,preg-replace,Php,Regex,Preg Replace,我知道preg_replace的工作原理,但我对regex很讨厌。以下是我正在努力实现的目标。我有网址: http://localhost/Wiki/index.php?*title=***TEST***&action=edit&redlink=1* 我想用以下url替换该url: http://localhost/Wiki/index.php/*Special:FormStart?page_name=***TEST***&form=Main* 从第一个url(在本例

我知道preg_replace的工作原理,但我对regex很讨厌。以下是我正在努力实现的目标。我有网址:

http://localhost/Wiki/index.php?*title=***TEST***&action=edit&redlink=1*
我想用以下url替换该url:

http://localhost/Wiki/index.php/*Special:FormStart?page_name=***TEST***&form=Main*
从第一个url(在本例测试中)获取标题并将其放入新url

以下是我目前的想法

$pattern = '/^?title=\ Dynamic title goes here \&action=edit&redlink=1$/';
换成

$replaceW = '/^Special:FormStart?page_name=\ Dynamic title goes here \&form=Main$/';
如果你能让我开始做这件事,我将不胜感激

试试这个

preg_replace(
    '/^http:\/\/localhost\/Wiki\/index\.php\?title=(.*(?=&))&action=edit&redlink=1$/',
    'http://localhost/Wiki/index.php/Special:FormStart?page_name=$1&form=Main',
    'http://localhost/Wiki/index.php?title=TEST&action=edit&redlink=1'
);

请注意,
(.*(=&))
通过使用前瞻来替换动态文本(有关此内容的更多信息,请参阅)

在第一个url中,您有“Wiki”,但在预期结果中,您有“WikiError”。这是打字错误还是有意的?Tyvm,我该如何替换页面段落中的两个url?Doesen=
(.*)
&action是否做了相同的事情?@Tyvm,如果url是松散的,您可以删除/。$/并将其正则表达式的一部分更改为=
(.*)
&action,然后使用/m,多行修饰符,或者删除这两个
^$
以及对(.*)的更改