首页 > 解决方案 > 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>

标签: javascriptphp

解决方案


oninput您已经为事件编写了 JS 函数。这意味着,它将寻找输入来触发更改,但是您正在分配段落中的文本,<p>同时从 db.xml 动态加载它。要么更改为<p><input>要么更好的是,将您的事件更改为onLoad.


推荐阅读