从字符串生成除youtube以外的PHP链接
我正在做一个论坛,我从互联网上获得了一个功能,可以从文本中生成链接,但我想让它忽略youtube链接,例如 代码如下:从字符串生成除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,
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]);
}
}
太棒了。请随意接受这个答案(勾选)并投票:)