-3

对于我基于 Laravel 的站点,我需要在文本内容中查找@#替换它,并将其替换为 URL,例如指向用户 Twitter 页面的 URL。我怎样才能:

  • 在 HTML 的文本部分中可靠地找到这些字符串
  • 用 URL 替换找到的实例
4

3 回答 3

1

它的代码很庞大。您必须在这里使用 ajax,在 textarea/textbox 中,您必须使用“onkeyup”事件,按下的每个键都必须与“@”或“#”进行比较,然后“@”之后的下一个字符必须是在数据库中搜索。所以让我们看到用户到目前为止已经输入了“@A”并且用户的目标是输入“@Ankur”然后一旦输入“A”,ajax 脚本就会开始在数据库中搜索用户并使用名称检索它, url,你只需要在屏幕上回显它。

于 2013-10-08T05:47:08.010 回答
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);
于 2013-10-08T05:48:41.220 回答
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>');
于 2013-10-08T05:48:43.423 回答