我用javascript制作了这个脚本,它用表情符号替换了文本,当我在文本区域':)''<3'等中写作时,工作正常。
但是当我写一篇文章并用这个描述保存它时" :)" 我希望出现表情符号而不是文本" :)">
显示已保存帖子说明的行:
<p class="ptext msg_wrap" id="message"><?php echo $row['post_description']; ?>
Javascript 代码:
<script type="text/javascript">
var map = {
"<3": "u2764uFE0F",
"</3": "uD83DuDC94",
":D": "uD83DuDE00",
":)": "uD83DuDE03",
";)": "uD83DuDE09",
":(": "uD83DuDE12",
":p": "uD83DuDE1B",
";p": "uD83DuDE1C",
":'(": "uD83DuDE22"
};
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 函数。 这意味着,它将寻找输入来触发更改,但您在从 db 动态加载文本时<p>
在段落中分配文本。 将<p>
更改为<input>
,或者更好的是,将您的事件更改为onLoad
.