Php 动态替换@和#如Twitter

Php 动态替换@和#如Twitter,php,regex,Php,Regex,对于我基于Laravel的站点,我需要在文本内容中找到@和#,并用URL替换它,例如指向用户Twitter页面的URL。我怎样才能: 在HTML的文本部分中可靠地找到这些字符串 用URL替换找到的实例 它的代码非常庞大。您必须在这里使用ajax,在文本区域/文本框中必须使用“onkeyup”事件,每个按下的键都必须与“@”或“#”进行比较,然后必须在数据库中搜索“@”之后的下一个字符。 因此,让我们看看用户到目前为止已经键入了“@A”,并且用户打算键入“@Ankur”,那么一旦键入了“A”,a

对于我基于Laravel的站点,我需要在文本内容中找到
@
#
,并用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>');