2014-10-02 80 views
0

,所以我想從別的地方更換網址(如www.google.com)轉換成HTML鏈接標籤這樣經字符串URL轉換爲HTML鏈接標記

return preg_replace('"\b(www.\S+)"', '<a href="$1" style="color:white;">$1</a>', $url); 

這個被修改的preg_replace和我還是不充分了解它是如何工作....

所以,如果我使用這個我會得到

<a href"www.google.com" style="color:white;">www.google.com</a> 

,這意味着它會尋找www.google.com在我的web目錄和不開放www.google .com網站

什麼,我想要實現

<a href"http://www.google.com" style="color:white;">google</a> 

所以如何實現這樣的事情?這將是更好的,如果當我鍵入

http://www.google.com 

那麼它也將取代

http://www. 

太.... 如果我對當前的配置只需更換WWW。但如果我與http://鍵入,那麼它將只從www.google.com跳轉,並且離開http://

編輯: 所以我想要一個flexibel,所以如果我輸入www.google.com或http://www.google.com它會抓住它,把它變成鏈接標籤.... 並且如果我輸入喜歡https://stackoverflow.com/posts/26154124/它只會顯示像

<a href"https://stackoverflow.com/posts/26154124/" style="color:white;">stackoverflow</a> 

2日編輯:對不起,我忘了說,我也想在鏈接中保留其他文本..所以它會像我打字「這是www.xxxxx.com的重大新聞」,當我顯示它/它將是「這是一個關於xxxxx的大新聞」,其中xxxxx會被點擊鏈接... ,我試圖做到這一點,因爲我要用它來做我的網站公告部分...

我們可以這樣做嗎?

更新:

我已經想了一些想法,怎麼樣首先我們的preg_replace趕上HTTP://並刪除它,以後我們趕上WWW。把它轉換成html鏈接標籤並且抓住www。一切AFER的.com/.CO /或.whatever並刪除這一切,直到下一個空間

,但我不知道如何使用的preg_replace,因爲我不知道它是如何工作

回答

0

你說這個?

$text = ' This is a text with the link of google.com. And another phrase with google.com url.'; 
echo str_replace('google.com','<a href="http://google.com" target=_blank>google</a>',$text); 
+0

以及www.google.com是唯一的例子...我希望它能夠抓住任何網址不僅www.google.com – PUCUK 2014-10-02 04:19:01

2

這是關於最接近我可以想出來,爲了做你想達到的目標。

我確信還有其他方法,但您可以嘗試以下方法。

你可以有一個文本文件中以下內容:(你可以有1個或多個行)

書籤。txt(顯示的確切格式) - 您不需要將http://設爲自動。

旁註:您可以使用google.comwww.google.com - 只有兩個字Google將顯示爲鏈接,但全href將出現在HTML源代碼,是一個有效的URL。

 
Google google.com 
Yahoo yahoo.com 
stackoverflow stackoverflow.com/posts/26154124 

然後使用以下PHP:

<?php 
$file = "bookmark.txt"; 
$lines = file($file); 
foreach($lines as $line) 
{ 
    $piece=explode(" ",$line); 
    $link=trim($piece[1]); 
    $text=trim($piece[0]); 
    echo '<a href="http://'.$link.'">'.$text.'</a><br>'; 
} 

注:$piece=explode(" ",$line);" "表示空格作爲分隔符。

你可以把它改成$piece=explode("|",$line);然後將文本文件更改爲:

 
Google|google.com 
Yahoo|yahoo.com 
stackoverflow|stackoverflow.com/posts/26154124 

,你應該決定使用類似Google Search

即:

 
Google Search|google.com 
Yahoo|yahoo.com 
stackoverflow link|stackoverflow.com/posts/26154124 

你也可以嘗試:

$content = "http://stackoverflow.com/posts/26154124"; 
$content = preg_replace('$(https?://[a-z0-9_./?=&#-]+)(?![^<>]*>)$i', ' <a href="$1" target="_blank">StackOverflow</a> ', $content." "); 

echo $content; 

但在這一點上一遍又一遍地閱讀您的問題,包括你的編輯,我不能完全肯定這就是你想要的,站在被非常廣泛,超出的範圍我與PHP的知識。

+0

以及謝謝你的努力....我嘗試了第二種方法,它只能與http: //和https://,如果我以www開頭,它無法捕捉鏈接。也鏈接標籤扭曲預定義的文本,這是stackoverflow,如何改變根據被捕捉的文字...和第一個我還沒有嘗試它,但從我看到它看起來像它唯一的重點想要改變爲鏈接的文本....以及這也是我的錯,我忘了解釋,我不僅給出鏈接輸入,還與其他文本一起... – PUCUK 2014-10-02 08:26:14

+0

@PUCUK不客氣。我不完全相信它會解決你的問題。我試過,*歡呼* – 2014-10-02 13:16:17

0

你總是正確的,但只是一個簡單的打字錯誤是做

<a href"http://stackoverflow.com/posts/26154124/" style="color:white;">stackoverflow</a> 

你錯過了「=」等號HREF後。請試試這個,而不是

<a href="http://stackoverflow.com/posts/26154124/" style="color:white;">stackoverflow</a> 

希望它可以幫助...

+0

哦,對不起,它只是在這個問題上的錯字ahahhaa大多數我使用自動完成,所以我幾乎從來沒有鍵入「=」,甚至我只是鍵入「h」,一切都像「href =」ahahhaah:D – PUCUK 2014-10-02 08:29:38