PHP-用已知的HTTP链接替换未知的FTP链接

PHP-用已知的HTTP链接替换未知的FTP链接,php,preg-replace,Php,Preg Replace,我一直在试图弄明白这一点,但我想在PHP中已经有一段时间了 假设我有以下链接: <a href="ftp://ftp.blah.com/duh/file.zip">Some Link</a> <a href="ftp://ftp.diffrentdomain.com/duh/file.zip">ftp://ftp.blah.com/duh/file.zip</a> <a href="ftp://duh:duh@blah.com>Cool

我一直在试图弄明白这一点,但我想在PHP中已经有一段时间了

假设我有以下链接:

<a href="ftp://ftp.blah.com/duh/file.zip">Some Link</a>
<a href="ftp://ftp.diffrentdomain.com/duh/file.zip">ftp://ftp.blah.com/duh/file.zip</a>
<a href="ftp://duh:duh@blah.com>Cool</a>
<a href="ftp://ftp.domain.com>1234</a>
<a href="ftp.anotherdomain.com">What ever</a>

基本上,我需要将其中任何一个替换为:

<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>

我试过处理
preg\u replace
strstr

请注意,字符串中有多个url可能是1到100,或者根本没有。我尝试了下面的方法,由于某种原因,我得到了0的返回值


似乎无法将其全部删除。

您好,请尝试下面的代码,它将帮助您。 此处
$url
是您要更改的实际url

function addhttp($url) {
    if (!preg_match("~^(?:f)tp?://~i", $url)) {
        $url = "http://" . $url;
    }
    return $url;
}
代码:


Hrm尝试过我需要它在一个字符串中创建多个URL一个大字符串一个留言板想法是如果你没有注册,你看不到任何链接我有这个用于http和附件的链接似乎无法用于ftp链接。也感谢你的帮助omg duh非常感谢这6个小时,这就完成了它看起来的技巧!非常感谢你!
<?php
$str = '<a href="ftp://ftp.blah.com/duh/file.zip">Some Link</a>
<a href="ftp://ftp.diffrentdomain.com/duh/file.zip">
ftp://ftp.blah.com/duh/file.zip</a>
<a href="ftp://duh:duh@blah.com>Cool</a>
<a href="ftp://ftp.domain.com>1234</a>
<a href="ftp.anotherdomain.com">What ever</a>
';

//replace every ftp link in $str
$str = preg_replace('/<a href="ftp.*?<\/a>/s', 
'<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>', 
$str);
print $str;
<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>
<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>
<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>
<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>
<a href="http://www.blah.com/register.php">http://www.blah.com/register.php</a>