我有php代码,显示文本。有时,此文本内容包含 @[2]之类的用户提及,其中2是我数据库中用户表中提到的用户的行的序列号。假设此用户具有用户名@mark。
我想用用户配置文件链接替换此提及的代码 @[2],例如<a href="https://example.com/mark">@mark</a>
喜欢从 @[2]字符串中获取值2。该值是一个变量在数据库中的用户表中找到受尊敬的行显示用户名和用户配置文件链接,而不是 @[2]。
对于字符串替换技巧,您通常会使用preg_replace_callback
。
怪异的@[2]
占位符可以与以下正则匹配:
/@[(d+)]/
# ↑ ↑ ↑
#@ [ num ]
然后在回调中进行链接映射:
$texty = preg_replace_callback(
"/@[(d+)]/",
function($m) {
return "<a href='/profile?id=$m[1]'>" . user_id_to_name($m[1]) . "</a>";
}
$texty
);
显然具有适当的ID→数据库的名称查找功能。