在PHP中从字符串中创建除youtube之外的链接

时间:2014-05-09 15:20:35

标签: php exception hyperlink youtube

我正在做一个论坛,我从互联网上获得了一个来自文本的链接功能,但我希望它忽略youtube链接,例如http://www.youtube.com/ ....

这是代码:

function makeLinks($str) {
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$urls = array();
$urlsToReplace = array();
if(preg_match_all($reg_exUrl, $str, $urls)) {
    $numOfMatches = count($urls[0]);
    $numOfUrlsToReplace = 0;
    for($i=0; $i<$numOfMatches; $i++) {
        $alreadyAdded = false;
        $numOfUrlsToReplace = count($urlsToReplace);
        for($j=0; $j<$numOfUrlsToReplace; $j++) {
            if($urlsToReplace[$j] == $urls[0][$i]) {
                $alreadyAdded = true;
            }
        }
        if(!$alreadyAdded) {
            array_push($urlsToReplace, $urls[0][$i]);
        }
    }
    $numOfUrlsToReplace = count($urlsToReplace);
    for($i=0; $i<$numOfUrlsToReplace; $i++) {
        $str = str_replace($urlsToReplace[$i], "<a href=\"".$urlsToReplace[$i]."\">".$urlsToReplace[$i]."</a> ", $str);
    }
    return $str;
} else {
    return $str;
}
}

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

if (preg_match('/youtube.com/i', strtolower($str))) {
    return $str;
}

function makeLinks($str) {

之后添加此内容

用法:

var_dump(makeLinks('http://www.youtube.com'));
var_dump(makeLinks('http://www.test.com'));

输出:

string 'http://www.youtube.com' (length=22)

string '<a href="http://www.test.com">http://www.test.com</a> ' (length=54)

答案 1 :(得分:0)

在将$urls[0][$i]添加到网址数组中以转换为链接之前,请查看youtube是否与if(!$alreadyAdded) { array_push($urlsToReplace, $urls[0][$i]); } 不匹配。例如,替换此代码段:

if(!$alreadyAdded) {
    if (!preg_match('/youtu\.?be/i', $urls[0][$i])) {
        array_push($urlsToReplace, $urls[0][$i]);
    }
}

有了这个:

{{1}}