Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串生成除youtube以外的PHP链接_Php_Exception_Hyperlink_Youtube - Fatal编程技术网

从字符串生成除youtube以外的PHP链接

从字符串生成除youtube以外的PHP链接,php,exception,hyperlink,youtube,Php,Exception,Hyperlink,Youtube,我正在做一个论坛,我从互联网上获得了一个功能,可以从文本中生成链接,但我想让它忽略youtube链接,例如 代码如下: 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,

我正在做一个论坛,我从互联网上获得了一个功能,可以从文本中生成链接,但我想让它忽略youtube链接,例如

代码如下:

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;
}
}
函数makeLinks($str){
$reg|u exUrl=“/(http | https | ftp | ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/”;
$url=array();
$urlsToReplace=array();
if(preg_match_all($reg_exUrl,$str,$url)){
$numOfMatches=count($url[0]);
$numourlstoreplace=0;

对于($i=0;$i请尝试以下操作:

if (preg_match('/youtube.com/i', strtolower($str))) {
    return $str;
}
在函数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)
string'http://www.youtube.com'(长度=22)
字符串“”(长度=54)

在将其添加到URL数组以转换为链接之前,查看
$URL[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]);
    }
}

太棒了。请随意接受这个答案(勾选)并投票:)