解析主题标签的文本并使用 php 替换为链接 [英] Parse text for hashtags and replace with links using php

查看:38
本文介绍了解析主题标签的文本并使用 php 替换为链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些推特风格的文字#hashtags.我将如何编写一个函数来解析可能包含无限数量#hashtags 的文本正文,获取主题标签的文本并将它们全部替换为 <a href="tag/[hashtag text]">[主题标签文本]

我想了很多关于如何做到这一点,但我真的很不擅长用正则表达式编写这些类型的函数.

示例文本:

<块引用>

Lorem ipsum dolor 坐 amet,consectetur adipiscing 精英.Vivamus #tristique non elit eu iaculis.Vivamus eget ultricies nisi.Vivamus hendrerit 在 mauris condimentum scelerisque.Donec nibh mauris,pulvinar et #commodo a, porta ettellus.Duis eget ante gravida,convallis augue id, blandit lectus.Mauris euismod commodo miut凤梨酥.Sed felis magna, rhoncus vitae mattis varius, sagittis a爱欲.Donec eget porta ipsum.#Mauris sed mauris ante.暂停潜能.Donec a #pretium #augue,eget hendrerit orci.整数诅咒scelerisque 结果.

解决方案

试试这个:

$text = "Vivamus #tristique non elit eu iaculis.";$text = preg_replace('/(?:^|\s)#(\w+)/', ' <a href="tag/$1">$1</a>', $text);//$text now: Vivamus <a href="tag/tristique">tristique</a>非欧盟精英;

它正在运行:https://3v4l.org/WXqTr(点击运行).

正则表达式参考:空格或字符串开头非捕获组

原始来源:使用 RegExp 解析 Twitter

I have some text with twitter style #hashtags. How would I write a function to parse a body of text that might contain an unlimited number of #hashtags, take the text of the hashtag and replace them all with an <a href="tag/[hashtag text]">[hashtag text]</a>

I've thought a lot about how to do this but I am really bad at writing these sorts of functions with regex.

Example text:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus #tristique non elit eu iaculis. Vivamus eget ultricies nisi. Vivamus hendrerit at mauris condimentum scelerisque. Donec nibh mauris, pulvinar et #commodo a, porta et tellus. Duis eget ante gravida, convallis augue id, blandit lectus. Mauris euismod commodo mi ut fringilla. Sed felis magna, rhoncus vitae mattis varius, sagittis a eros. Donec eget porta ipsum. #Mauris sed mauris ante. Suspendisse potenti. Donec a #pretium #augue, eget hendrerit orci. Integer cursus scelerisque consequat.

解决方案

Try using this:

$text = "Vivamus #tristique non elit eu iaculis.";
$text = preg_replace('/(?:^|\s)#(\w+)/', ' <a href="tag/$1">$1</a>', $text);
// $text now: Vivamus <a href="tag/tristique">tristique</a> non elit eu iaculis;

Here it is working: https://3v4l.org/WXqTr (click run).

Regex reference: Space or beginning of string, Non capturing group

Original source: Parsing Twitter with RegExp

这篇关于解析主题标签的文本并使用 php 替换为链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆