Php 动态替换@和#如Twitter
对于我基于Laravel的站点,我需要在文本内容中找到Php 动态替换@和#如Twitter,php,regex,Php,Regex,对于我基于Laravel的站点,我需要在文本内容中找到@和#,并用URL替换它,例如指向用户Twitter页面的URL。我怎样才能: 在HTML的文本部分中可靠地找到这些字符串 用URL替换找到的实例 它的代码非常庞大。您必须在这里使用ajax,在文本区域/文本框中必须使用“onkeyup”事件,每个按下的键都必须与“@”或“#”进行比较,然后必须在数据库中搜索“@”之后的下一个字符。 因此,让我们看看用户到目前为止已经键入了“@A”,并且用户打算键入“@Ankur”,那么一旦键入了“A”,a
@
和#
,并用URL替换它,例如指向用户Twitter页面的URL。我怎样才能:
- 在HTML的文本部分中可靠地找到这些字符串
- 用URL替换找到的实例
- 它的代码非常庞大。您必须在这里使用ajax,在文本区域/文本框中必须使用“onkeyup”事件,每个按下的键都必须与“@”或“#”进行比较,然后必须在数据库中搜索“@”之后的下一个字符。
因此,让我们看看用户到目前为止已经键入了“@A”,并且用户打算键入“@Ankur”,那么一旦键入了“A”,ajax脚本将开始在数据库中搜索用户,并使用名称、url检索它,您只需在屏幕上回显它即可。这就是您要查找的内容
$strTweet=preg#u replace('/(^|\s)#(\w*[a-zA-Z]+\w*)/'、'\1#'、$strTweet);
及
$input=preg_replace('/(?使用regex)非常简单。我会制作一个带有前缀和替换的函数,如下所示
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>');
$text='嘿,看,那边是@stackoverflow';
//预期产出:
//嘿,看,在那边
回显tweetReplaceObjects($text、@、“”);
带有一个\u replace()
内置功能有很多方法可以满足您的要求-您应该选择其中一种,在实现时遇到问题时返回此处。显示您尝试过的代码?@dragonfire1119您确实需要在问题中加入有关在数据库中查找内容的部分。这实际上就是您的全部问题。替换字符串很简单,这就是你最初问的。@Brad是的Brad是正确的,我正在使用html,这是我的问题所有这些答案都很好,但它们都盲目地替换@和#像上面的重复。感谢所有帮助。是的,我不得不重新考虑我的路线,但这解决了问题。谢谢。如果这有帮助并解决了问题,你可以我真的不明白为什么人们不能做你刚刚做的事情,只是帮助我,而不是抱怨,指导我到2到3年前的帖子。也没有人读原始问题,他们只是想投票否决并编辑它。谢谢你的帮助。
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>');