Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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
如何使用php链接字符串中的URL?_Php_Regex_Yii - Fatal编程技术网

如何使用php链接字符串中的URL?

如何使用php链接字符串中的URL?,php,regex,yii,Php,Regex,Yii,我有以下字符串,其模式如下所示: 1)click on http://www.google.com 2) click onhttp://www.google.com". 3) click on www.google.com 4) click onwww.google.com 5) click on www.google.com#xyz 6) click onwww.google.com#xyz 我需要使用正则表达式将所有这些字符串转换为以下格式: click on <a hre

我有以下字符串,其模式如下所示:

1)click on http://www.google.com

2) click onhttp://www.google.com".

3) click on www.google.com

4) click onwww.google.com

5) click on www.google.com#xyz

6) click onwww.google.com#xyz
我需要使用正则表达式将所有这些字符串转换为以下格式:

click on <a href="http://www.google.com" target="_blank">http://www.google.com</a>

click onhttp://www.google.com

click on <a href="http://www.google.com" target="_blank">www.google.com</a>

click onwww.google.com

click on <a href="http://www.google.com#xyz" target="_blank">www.google.com#xyz</a>

click onwww.google.com
点击
点击onhttp://www.google.com
点击
点击www.google.com
点击
点击www.google.com

您可以有如下内容:

<?php
 function addhttp($url) {
   if (false === strpos($url, '://')) {
      $url = 'http://' . $url;
   }
   return $url;
 }

 $url = "www.google.com";

 var_dump(addhttp($url)); 
 ?>

然后,对于要输出“http://”的URL,只需将其传递给函数即可


输出:

您可以使用以下内容:

/\s((http(s)?\:\/\/[a-zA-Z0-9\-\.]+\.)(com|org|net|mil|edu|))/i
 $str = preg_replace(
            '/\s((http(s)?\:\/\/[a-zA-Z0-9\-\.]+\.)(com|org|net|mil|edu))/i',
            ' <a href="${1}" target="_blank">${1}</a>', 
             $s);
取代

<a href="$2">$2<a/>

这将使您的PHP类似于

/\s((http(s)?\:\/\/[a-zA-Z0-9\-\.]+\.)(com|org|net|mil|edu|))/i
 $str = preg_replace(
            '/\s((http(s)?\:\/\/[a-zA-Z0-9\-\.]+\.)(com|org|net|mil|edu))/i',
            ' <a href="${1}" target="_blank">${1}</a>', 
             $s);
$str=preg\u replace(
“/\s((http(s)\:\/\/[a-zA-Z0-9\-\.]+\)(com | org | net | mil | edu))/i”,
' ', 
$s);
例如:

注意:您需要修改它以允许-但是基本设置存在)

函数linkify($string){
返回preg_replace(“~\bhttp?”://[^[:space:]+[[:alnum://]\b~”,“”,$string);
}

因此,
点击
变成了
查看
,URL也可以点击?我还需要第二个的建议。@AbhishekKasera我已经编辑过,包括
target=“\u blank”
。有什么我错过了吗?@downvoter-为什么没有解释就投了downvoter?似乎很愚蠢。添加
http://
不会自动使链接可点击。哇,我没有再次添加
,愚蠢的原因。没问题,请给我建议解决方案。。。问题现在更新了有很多新的顶级域名…它适用于https,但在url包含www.ie.“onwww.example.com”时不起作用。哦,你已经更新了问题。是的,添加了所有要求,所以请向我建议解决方案。嗯,不清楚你如何决定合法的第三级域名的外观。onwww.somesite.com是一个有效的域名,严格来说不是URL(因为没有架构)。