使用 preg_replace() 进行动态替换

Get dynamic replacement with preg_replace()

这是我的 url:

ftp://dynamic_text:user_password@my-ftp-domain.com/so-on/param

我的正则表达式会把它变成这样:

ftp://*****:*****@my-ftp-domain.com/so-on/param

请注意,url 可以以 ftphttp 开头。

正则表达式:

无论我的 url 是否以 http 开头,我下面的正则表达式总是 return ftp

preg_replace('@(ftp|http)://(.*:.*)\@@', 'ftp://****:****@', $url);

现在我的问题是:如何修改我的代码,以便根据我的 url 的启动方式动态地 return ftphttp

我读到 Named Groups,但我无法解决它。

只需将替换中的 ftp 部分更改为 </code> 即可获得第一组的值,例如 </p> <pre><code>preg_replace('@(ftp|http)://(.*:.*)\@@', '://****:****@', $url); //^^