javascript - PHP中用户描述帖子上的文本替换为表情符号
问题描述
我有这个用 javascript 编写的脚本,它用表情符号替换文本,当我在 textarea ':)' '<3' 等中写入时工作正常。
但是当我写一个帖子并用这个描述“:)”保存它时,我希望出现表情符号而不是文本“:)”
显示的行是已保存帖子的描述:
<p class="ptext msg_wrap" id="message"><?php echo $row['post_description']; ?>
Javascript代码:
<script type="text/javascript">
var map = {
"<3": "\u2764\uFE0F",
"</3": "\uD83D\uDC94",
":D": "\uD83D\uDE00",
":)": "\uD83D\uDE03",
";)": "\uD83D\uDE09",
":(": "\uD83D\uDE12",
":p": "\uD83D\uDE1B",
";p": "\uD83D\uDE1C",
":'(": "\uD83D\uDE22"
};
function escapeSpecialChars(regex) {
return regex.replace(/([()[{*+.$^\\|?])/g, '\\$1');
}
document.getElementById('message').oninput = function() {
for (var i in map) {
var regex = new RegExp(escapeSpecialChars(i), 'gim');
this.value = this.value = this.value.replace(regex, map[i]);
}
};
</script>
解决方案
oninput
您已经为事件编写了 JS 函数。这意味着,它将寻找输入来触发更改,但是您正在分配段落中的文本,<p>
同时从 db.xml 动态加载它。要么更改为<p>
,<input>
要么更好的是,将您的事件更改为onLoad
.
推荐阅读
- c# - 2个坐标的平均值
- java - 为什么 Bifunction 接口 Java 8 中省略了 compose 和 identity 方法?
- c# - 如何编写将图片与正确单词链接的列表代码?
- typescript - Redux-saga 和 Typescript 错误:无法调用类型缺少调用签名的表达式
- c# - asp.net Core - Getting a system.InvalidOperationException on Httpcontext.Session
- android - 无法在线性布局中均匀对齐项目
- ios - iOS: UnitTesting: Cocoa Touch Framework: 在 XCTest 中传递 App 的 info plist 数据
- javascript - 在视频行之后添加音频行
- javascript - 如何在 jQuery .each() 函数中使用“类”而不是“ID”?
- reactjs - 找不到 doc 和 docx 的 GooglePicker mimeTypes