我正在尝试使用php创建表情符号系统,以用于我的网站评论earea。我已经为表情符号列表创建了表格。像这样:
+----------+------------+-------------+
| emoji_id | emoji_key | emoji_img |
+----------+------------+-------------+
| 1 | :smile: | smile.png |
+----------+------------+-------------+
| 2 | :heart: | heart.png |
+----------+------------+-------------+
例如,用户发布了这样的评论:
嗨,这是我的第一个评论:heart:
,:smile:
。
我想检测表情符号文字。如果注释中存在emoji_key,则将:heart:替换为heart.png。
<img src="emoji/<?php echo $emoji_img;?>" />
反正有这样做吗?
例如:
$userComment = 'Hi this is a first comment i :heart: this comment :smile: .';
Pring应该这样:
Hi this is my first comment <img src="emoji/heart.png"> this comment <img src="emoji/smile.png">
答案 0 :(得分:2)
我假设您正在使用mysqli,并且您的连接称为$conn
。首先,您需要在用户注释中找到表情符号字符串,您可以使用preg_match_all
:
preg_match_all('/(:\w+:)/', $userComment, $matches);
现在您可以在表情符号表中搜索那些字符串(我假设它的名称为emojis
:
$sql = "SELECT * FROM emojis WHERE emoji_key IN ('" . implode("','", $matches[1]) . "')";
$result = $conn->query($sql);
现在遍历结果并使用str_replace
替换字符串中的值:
while ($row = $result->fetch_assoc()) {
$userComment = str_replace($row['emoji_key'], "<img src=\"emoji/{$row['emoji_img']}\">", $userComment);
}
echo $userComment;
输出:
Hi this is a first comment i <img src="emoji/heart.png"> this comment <img src="emoji/smile.png"> .
答案 1 :(得分:1)
这可能有帮助...
尝试根据您的要求进行修改...
$userComment = 'Hi this is a first comment i :heart: this comment :smile: .';
preg_match_all('/:(.*?)\:/s', $userComment, $m);
$newComment = str_replace($m[0], ' <img src="emoji/'.$m[1].'.png">', $userComment );
echo $newComment;