2014-11-06 16 views
-1

我有圖案,其下面給出的以下字符串:如何用php連接字符串中的url?

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 
+0

因此,'點擊'成爲'看看'和URL是可點擊的? – 2014-11-06 08:32:49

+0

在問一個新問題之前,請使用搜索欄。 – 2014-11-06 08:53:07

+0

我想要第二個建議。 – 2014-11-06 09:31:39

回答

-2

你可能有這樣的事情:

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

$url = "www.google.com"; 

var_dump(addhttp($url)); 
?> 

然後,對於要輸出「http://」的URL,您只需將它傳遞給函數即可。

輸出:http://codepad.org/MlvXWRR2

+0

@downvoter - 爲什麼downvote沒有解釋?看起來很愚蠢。 – Phorce 2014-11-06 08:34:30

+0

添加'http://'不會自動使鏈接可點擊。 – 2014-11-06 08:36:20

+0

哇,我沒有再加'',愚蠢的原因。沒有冒犯 – Phorce 2014-11-06 08:38:19

-2

您可以使用類似;

/\s((http(s)?\:\/\/[a-zA-Z0-9\-\.]+\.)(com|org|net|mil|edu|))/i 

憑藉的

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

http://regex101.com/r/nI4gU6/7

這將使你的PHP像更換;

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

例如:https://eval.in/218269

注:你需要修改它允許all the other (g)TLD's - 但是其基本設置是有)

+0

有很多新的頂級域名... – Croises 2014-11-06 10:20:44

0
function linkify($string) { 
    return preg_replace("~\bhttp(s)?://[^<>[:space:]]+[[:alnum:]/]\b~", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $string); 
} 

https://eval.in/218437

+0

它的工作爲https,但不工作時,當URL包含萬維網ie。 「onwww.example.com」 – 2014-11-07 11:11:53

+0

哦,你已經更新了這個問題。 – 2014-11-07 11:19:20

+0

是的,添加所有的要求,所以請建議我的解決方案 – 2014-11-07 11:33:26