2013-10-08 37 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