在PHP中,将一个URL替换为字符串中的另一个URL,例如
New post on the site <a href="http://stackoverflow.com/xyz1">http://stackoverflow.com/xyz1</a></p>
变为:
New post on the site <a href="http://yahoo.com/abc1">http://yahoo.com/abc1</a></p>
必须适用于重复上述字符串。欣赏这很简单但很挣扎!
答案 0 :(得分:3)
function replace_url($text, $newurl) {
$text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $newurl, $text);
return $text;
}
应该有效。 正则表达式从here被盗。这将用新的URL替换字符串中的所有URL。
答案 1 :(得分:1)
$text = str_replace('http://stackoverflow.com/xyz1', 'http://yahoo.com/abc1', $text);
这将用$ text中的第二个URL替换第一个URL。
答案 2 :(得分:0)
试试这个:
preg_replace('#(https?://)(www\.)?stackoverflow.com\b#', '\1\2yahoo.com', $text);
如果要更改网址后的路径,请添加其他组并使用preg_replace_callabck
。 PHP文档中的更多信息。