当前位置: 首页 > 知识库问答 >
问题:

在字符串中查找@提及

秦联
2023-03-14

正在尝试用锚定标记替换所有出现的@提及,到目前为止,我有:

$comment = preg_replace('/@([^@ ])? /', '<a href="/$1">@$1</a> ', $comment);

获取以下示例字符串

"@name kdfjd fkjd as@name @ lkjlkj @name"

到目前为止,所有匹配都正常,但我想忽略单个“@”符号。我曾尝试在“[^@]”之后使用“”和“{2,}”,我认为这将强制执行最低数量的匹配,但它不起作用。

共有3个答案

严修谨
2023-03-14

我喜欢佩塔的回答,但我稍微调整了一下

preg_replace('/(^|\s)@([\w.]+)/', '$1<a href="/users/$2">@$2</a>', $text);

主要区别是:

  • 不包括@符号。这是只显示,不应该在URL
  • 允许.字符(注意:\w包含下划线)
  • 在替换中,我在开头添加了1美元以保留空白
咸星波
2023-03-14

正则表达式

(^|\s)(@\w+)

可能是你想要的。

它的基本意思是,行的开头或空格,然后是@符号,后跟1个或多个单词字符。

例如。

preg_match_all('/(^|\s)(@\w+)/', '@name1 kdfjd fkjd as@name2 @ lkjlkj @name3', $result);
var_dump($result[2]);

给你

Array
    (
        [0] => @name1
        [1] => @name3
    )
郎恺
2023-03-14

替换问号()量词(“可选”),并在字符类后添加一个(“一个或多个”):

@([^@ ]+)
 类似资料:
  • 问题内容: 我正在寻找一种在字符串中查找JSON数据的方法。像wordpress简码一样思考它。我认为最好的方法是使用正则表达式。我不想解析JSON,只需查找所有出现的事件。 正则表达式中是否有办法使括号的数量匹配?目前,当我嵌套对象时遇到了这个问题。 演示的快速示例: 结果,我想要两个JSON字符串。谢谢! 问题答案: 从给定的文本中提取JSON字符串 由于您正在寻找一种简单的解决方案,因此可以

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 问题是,我试图这么做,但我检查字符串长度的方法不起作用;我能做些什么来修复它?

  • 问题内容: 我需要在HTML源代码中找到一个单词。我还需要计算发生的次数。我正在尝试使用正则表达式。但它说找到0个匹配项。 我正在使用正则表达式,因为我认为这是最好的方法。如果有更好的方法,请告诉我。 我需要在HTML源代码中找到单词“ hsw.ads”的出现。 我已采取以下步骤。 但是计数是0; 请让我知道您的解决方案。 谢谢。帮助寻求者 问题答案: 您应该尝试一下。 在字符串中传递要搜索的单词

  • 主要内容:根据字符查找,根据索引查找在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。 根据字符查找 String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取匹配字符(串)的索引值。 1. indexOf() 方法 indexOf() 方法用于返回字符(串)在指定字符串中首次出现的索

  • 问题 你需要搜索一个字符串,并返回匹配的起始位置或匹配值本身。 解决方案 有几种使用正则表达式的方法来实现这个功能。其中一些方法被称为 RegExp 模式或对象还有一些方法被称为 String 对象。 RegExp 对象 第一种方式是在 RegExp 模式或对象中调用 test 方法。test 方法返回一个布尔值: match = /sample/.test("Sample text") # =>