php - 解析文本中的 Instagram 用户名并用链接替换它们
问题描述
因此,根据此处的其他一些帖子,我能够使用以下方法从文本字符串中解析主题标签:
preg_replace('/(?:^|\s)#(\w+)/', ' <a href="https://instagram.com/tags/$1">$1</a>', $text);
这将每个主题标签都变成了可点击的链接,这很棒!
但是,对于 Instagram 用户名(以 @ 开头),我使用以下内容:
preg_replace('/(?:^|\s)@(\w+)/', ' <a href="https://instagram.com/$1">$1</a>', $text);
但问题是:用户名也可以包含点 (.)。
所以我把它改成:
preg_replace('/(?:^|\s)#([\w.]+)/', ' <a href="https://instagram.com/tags/$1">$1</a>', $text);
但这样做的问题是,以@mention 结尾的句子将在用户名中添加结束句子的点 (.)。
所以我需要的是一个正则表达式,它包含带点的单词,但不是末尾的点(点后跟空格,或者是字符串的最后一个字符)。
例如:
Hi this is a @test to parse @insta.usernames using @regular.expressions.
应该返回:
@test
@insta.usernames
@regular.expressions
任何帮助是极大的赞赏!
解决方案
推荐阅读
- clojure - 是否可以定义一个宏:在函数上调度其他任何东西?
- python - aiohttp中的自定义访问日志
- scala - 错误:未找到:值 SparkSession
- maven - JHipster Spring Boot 模块化拆分包
- haskell - Haskell 列出错误
- javascript - 绑定数组中不同元素的值 (JavaScript)
- r - Y 和 M 模型中样本量不均匀的 R 多级中介
- sql - 如何为我的 Reporting Services 目录中的所有报表添加内容管理员权限?
- java - 使用循环访问 Freemarker 根对象
- dart - 如何使用 Flutter 创建考试准备?