PHP将以@开头的字符串转换为用户配置文件URL

时间:2019-03-06 17:57:45

标签: php

我有显示帖子文本的PHP代码。有时,此帖子文本内容包含用户提及内容,例如@ [2],其中2是我数据库中用户表中所提及用户的行的序列号。假设该用户的用户名为@mark。

我想用用户个人资料链接(例如<a href="https://example.com/mark">@mark</a>

替换此提及代码@ [2])

就像从@ [2]字符串中取值2一样。该值是一个变量 在数据库的用户表中查找有关的行 显示用户名和用户个人资料链接,而不是@ [2]。

1 个答案:

答案 0 :(得分:1)

对于字符串替换技巧,通常使用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→名称查找功能。