2013-10-08 39 views
-3

對於我的基於Laravel的網站,我需要在文本內容中找到@#,並將其替換爲URL,例如指向用戶Twitter頁面的URL。我怎樣才能:動態替換@和#like Twitter

  • 可靠地找到HTML
  • 的文本部分內這些字符串與URL
+0

帶有'_replace()'內置函數之一 –

+0

我假設你只需要匹配一個單詞?這是在HTML的上下文嗎? – Brad

+2

有許多方法可以做你所要求的 - 當你遇到實施它的問題時,你應該選擇一個並回到這裏。 – Marty

回答

1

它的代碼是巨大的替換找到實例。你必須在這裏使用ajax,在textarea/textbox中你必須使用「onkeyup」事件,每個按下的鍵都必須與「@」或「#」比較,那麼「@」之後的下一個字符必須是在數據庫中搜索。 所以讓我們看到了用戶鍵入「@A」到現在爲止,並且用戶一旦「A」的宗旨,鍵入「@Ankur」然後鍵入的AJAX腳本將開始搜索數據庫中的用戶,它是與檢索名稱,網址,你只需要在屏幕上回顯。

0

這是你在找什麼.. https://stackoverflow.com/a/4277114/829533

$strTweet = preg_replace('/(^|\s)#(\w*[a-zA-Z_]+\w*)/', '\1#<a href="http://twitter.com/search?q=%23\2">\2</a>', $strTweet); 

而且https://stackoverflow.com/a/4766219/829533

$input = preg_replace('/(?<=^|\s)@([a-z0-9_]+)/i', '<a href="http://www.twitter.com/$1">@$1</a>', $input); 
+1

雅我必須重新思考我的路線,但這解決了謝謝。 – dragonfire1119

+0

如果這有助於解決問題,你可以接受這個問題作爲回答 – zzlalani

0

使用正則表達式是相當簡單的。我會做一個帶前綴和替換的函數,像這樣。

function tweetReplaceObjects($input, $prefix, $replacement) { 
    return preg_replace("/$prefix([A-Za-z0-9_-])/", $replacment, $input); 
} 

一個示例用法就是這樣的。

$text = 'hey look, it\'s @stackoverflow over there'; 

// expected output: 
// hey look, it's <a href="http://www.twitter.com/stackoverflow">stackoverflow</a> over there 
echo tweetReplaceObjects($text, '@', '<a href="http://www.twitter.com/$1">$1</a>'); 
+0

我不明白爲什麼人們不能做你剛剛做的事情,只是幫助我而不是抱怨,並指導我到2至3歲的職位。也沒有人閱讀他們只想投票並編輯它的原始問題。謝謝您的幫助。 – dragonfire1119