2012-08-15 40 views
0

我還有另外一個問題,但我認爲這個問題可能不那麼普通。但快速免責聲明,這是一個更加開放的,所以讓我開始說,我不是在尋找一個完整的解決方案來解決我在這裏打開的更大的問題,並且如果我伸出極限,我會提前道歉可接受的參考代碼包含的最小值。我尊重你的時間,再加上我更願意把拼湊自己:P使用jQuery選擇和過濾innerHTML文本

有了這樣FO的方式,這裏的問題: 我已經成立了,拉從Twitter的飼料,然後將文本一個PHP函數將其作爲某種網站上的「社交媒體」邊欄發佈。麻煩的是,Tweets中包含的鏈接正在以簡單文本的形式進行復制。例如:

<p>Last night saw the USA win gold in Women's Beach Volleyball---today at 1pm... the 
    USA WOMEN SOCCER team will go... http://t.co/M7rtaZFC</p> 

我想抓住這斷開鏈接URL的盡頭有,在一些友好的「A」的標籤包裝它,並把它在它的快樂的方式。 我可以計算出除了實際過濾jQuery返回目標'http://'+字符串的其餘部分之外的所有內容。

這是可能使用jQuery?再次,我不期待任何深入的內容,只是想找人指點我正確的方向。感謝您的時間!

+0

IMO,你可以嘗試一個簡單的JavaScript的解決方案,而不是jQuery的。看一個很好的例子[這裏](http:// stackoverflow。com/questions/37684/how-to-replace-plain-urls-with-links) – Gunnar 2012-08-15 11:46:20

+0

謝謝,但我試圖解決的這個等式的部分是過濾器/選擇難題。我如何從一段文本中檢測和目標?如果我不能這樣做,那麼我沒有什麼可以傳遞給你共享的函數(除非我錯過了某些東西......) – monners 2012-08-15 12:24:15

+0

這個JS函數使用表達式。這意味着它會搜索設置要過濾的表達式。在這種情況下,您輸入一串文本,表達式在文本中搜索URL(以'https','ftp'和'file'開頭),並添加要添加的標籤。因此,它可以像你想要的那樣「檢測和定位文本塊」。 – Gunnar 2012-08-15 15:25:37

回答

2

首個解決方案只需使用PHP

我不知道你是怎麼搶的鳴叫,但我之前用這個PHP代碼,並將其打印出的鏈接就裹在<a>標籤都有效。所以,這裏不需要使用JavaScript:

// get tweets 
function UtilityGetLatestTweets() { 

    $user  = 'username'; 
    $limit  = 10; 
    $value  = ''; 

    $curl  = curl_init(); 

    curl_setopt($curl, CURLOPT_URL, 'http://search.twitter.com/search.atom?q=from:' . $user . '&amp;rpp=' . $limit); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_HEADER, 0); 

    $result  = curl_exec($curl); 
    curl_close($curl); 

    $xml  = simplexml_load_string($result); 

    foreach ($xml->entry as $tweet) { 
     $value .= $tweet->content; 
    } 

    return $value; 
} 

$tweets  = UtilityGetLatestTweets(); 

也許這會幫助你。

編輯:第二個解決方案使用JavaScript

如果你想要一個JavaScript的解決方案,你可以用這個去:

的JavaScript

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp,"<a href='$1'>$1</a>"); 
} 

// when document is loaded 
$(document).ready(function() { 
    // select all p-tags within a container 
    $('#content p').each(function (key, value) { 
     // replace the content 
     $(value).html(replaceURLWithHTMLLinks($(value).text())); 
    }); 
}); 

HTML

<div id="content"> 
    <p>Some text and link http://somethingsomething.com</p> 
    <p>Some text and link http://somethingdifferent.com</p> 
</div> 

這是假設所有<p>標籤都被包裝在一個容器中一個ID。

  • 它使用ID-選擇結合所述標籤選擇器
      :`$( '#含量P')通過所有的元素以選擇所有的鳴叫
    • 之後它循環
    • 它會使用$(value).text()
    • 每個條目的文本從這個answer
    • 替換使用 replaceURLWithHTMLLinks
    • 更新<p>的HTML - 標籤使用$(value).html()
+0

謝謝隊友。我曾經考慮過在PHP方面解決這個問題,並且我最終可能會這樣做,但仍然是我喜歡用jQuery或者javaScript來做的事情。感謝解決方案雖然:) – monners 2012-08-15 12:18:18

+0

我不知道SEO的好處。但是,也許搜索引擎不會遵循代碼中的簡單鏈接,因爲它們看不到轉換的鏈接。而且你減少了客戶端活動,在服務器端進行。 – insertusernamehere 2012-08-15 12:25:50

+0

您提出了一個有趣的觀點... 也許這種方法不是解決這個問題的正確方案,但我仍然非常想知道是否有JavaScript解決方案,即將每條消息分解爲一組字符。 。 – monners 2012-08-15 12:33:49