如何使用“...”
替换网址中的用户名和密码示例
ftp://name:pass@example.com/file.mov 变 ftp://...@example.com/file.mov
http://name:pass@example.com/file.mov变为http://...@example.com/file.mov
答案 0 :(得分:2)
使用parse_url()
它拥有您需要的一切。
示例:
$url = 'ftp://name:pass@example.com/file.mov';
print_r(parse_url($url));
输出:
Array
(
[scheme] => ftp
[host] => example.com
[user] => name
[pass] => pass
[path] => /file.mov
[query] =>
[fragment] =>
)
然后您可以像这样建立新的网址:
$url = parse_url($url);
$newUrl = $url['scheme'].'://'.$url['host'].$url['path'].$url['query'].$url['fragment'];
答案 1 :(得分:1)
执行此操作的最佳方法可能是使用parse_url
:获取组件,修改它们,然后将它们构建回字符串。
$parts = parse_url('ftp://name:pass@example.com/file.mov');
$parts['user'] = 'newusername';
$parts['pass'] = 'newpassword';
$url = $parts['scheme'] . '://' .
(isset($parts['user']) ? $parts['user'] : '') .
(isset($parts['pass']) ? ':' . $parts['pass'] . '@' : '') .
$parts['host'] .
$parts['path'] .
(isset($parts['query']) ? '?' . $parts['query'] : '') .
(isset($parts['fragment']) ? '#' . $parts['fragment'] : '');
答案 2 :(得分:1)
替换正则表达式
([a-z]+://)[^@]*(@.*)
带有以下反向引用
$1$2
所以我猜在php中看起来像
preg_replace ("([a-z]+://)[^@]*(@.*)", "$1$2", $yourstring)
答案 3 :(得分:1)
不是最有效也不最可靠的方式,但我想尝试使用正则表达式。事实证明这很容易:
preg_replace("#(?<=://)[^:@]+(:[^@]+)?(?=@)#","...",$url);