我正在使用 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>
我如何修改我的正则表达式来创建这些结果?
最佳答案
这是一个使用 preg_replace_callback
的例子,由@failN 推荐:
$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>
关于php - 如何将主题标签文本转换为主题标签超链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495871/