首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将hashtag文本转换为hashtag超链接?

如何将hashtag文本转换为hashtag超链接?
EN

Stack Overflow用户
提问于 2011-06-28 00:23:22
回答 4查看 3.9K关注 0票数 5

我正在使用php的preg_replace()将前面有标签符号的任何单词转换为超链接。

所以像这样的代码:#austin将变成:<a href="/tag/austin">#austin</a>

下面是我的正则表达式。

preg_replace('/\B#(\w*[A-Za-z_]+\w*)/', '<a href="/tag/$1">$0</a>', $text);

我的问题是:如果有任何大写字母,href值将保留它们,但我希望href值始终完全小写。

输入:#Austin

不应该成为:<a href="/tag/Austin">#Austin</a>

它应该变成:<a href="/tag/austin">#Austin</a>

我如何修改我的正则表达式来创建这些结果?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-28 00:55:13

下面是一个使用@faileN建议的preg_replace_callback的例子:

Demo Link

代码语言:javascript
复制
$string = '#Austin';

function hashtag_to_link($matches)
{
  return '<a href="/tag/' . strtolower($matches[1]) . '">' . $matches[0] . '</a>';
}

echo preg_replace_callback('/\B#(\w*[a-z_]+\w*)/i', 'hashtag_to_link', $string);

// output: <a href="/tag/austin">#Austin</a>
票数 5
EN

Stack Overflow用户

发布于 2011-06-28 00:28:06

试试这个:

代码语言:javascript
复制
preg_replace('/\B#(\w*[A-Za-z_]+\w*)/', '<a href="/tag/$1">$0</a>', strtolower($text));

这将强制主体($text)在测试正则表达式之前为小写。

票数 4
EN

Stack Overflow用户

发布于 2011-06-28 00:26:50

您可以使用preg_replace_callback来实现这一点:http://de2.php.net/manual/en/function.preg-replace-callback.php

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6495871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档