通过JavaScript将textarea换行符转换为标记符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过JavaScript将textarea换行符转换为标记符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1824字,纯文字阅读大概需要3分钟。
内容图文
![通过JavaScript将textarea换行符转换为标记符](/upload/InfoBanner/zyjiaocheng/799/c9ba2d6284d54f35a2d68b18d4ff1d4f.jpg)
我正在使用html格式的textarea,我正在尝试使用< p>将其内容重新格式化为有效的html格式.和< br />标签.
我写了这个脚本,它似乎工作,但我想确保我没有遗漏任何东西.所以我要求反馈.我知道我没有考虑用户可能明确输入html标签的可能性,但这没问题,因为我将以PHP的形式发布结果.
提前致谢.
输出的一个例子:
<p>Line 1<br/>Line 2</p><p>Line 4<br/><br/><br/>Line 7</p>
和代码:
function getHTML() {
var v = document.forms[0]['txtArea'].value;
v = v.replace(/\r?\n/gm, '<br/>');
v = v.replace(/(?!<br\/>)(.{5})<br\/><br\/>(?!<br\/>)/gi, '$1</p><p>');
if (v.indexOf("<p>") > v.indexOf("</p>")) v = "<p>" + v;
if (v.lastIndexOf("</p>") < v.lastIndexOf("<p>")) v += "</p>";
if (v.length > 1 && v.indexOf("<p>") == -1) v = "<p>" + v + "</p>";
alert(v);
}
请注意,这是一个代码,旨在成为CMS的一部分,我所关心的JavaScript是用这两个标签重建textarea结果.所见即所得的问题……
解决方法:
这就是我想出来的.
function encode4HTML(str) {
return str
.replace(/\r\n?/g,'\n')
// normalize newlines - I'm not sure how these
// are parsed in PC's. In Mac's they're \n's
.replace(/(^((?!\n)\s)+|((?!\n)\s)+$)/gm,'')
// trim each line
.replace(/(?!\n)\s+/g,' ')
// reduce multiple spaces to 2 (like in "a b")
.replace(/^\n+|\n+$/g,'')
// trim the whole string
.replace(/[<>&"']/g,function(a) {
// replace these signs with encoded versions
switch (a) {
case '<' : return '<';
case '>' : return '>';
case '&' : return '&';
case '"' : return '"';
case '\'' : return ''';
}
})
.replace(/\n{2,}/g,'</p><p>')
// replace 2 or more consecutive empty lines with these
.replace(/\n/g,'<br />')
// replace single newline symbols with the <br /> entity
.replace(/^(.+?)$/,'<p>$1</p>');
// wrap all the string into <p> tags
// if there's at least 1 non-empty character
}
您需要做的就是使用textarea的值调用此函数.
var ta = document.getElementsByTagName('textarea')[0];
console.log(encode4HTML(ta.value));
内容总结
以上是互联网集市为您收集整理的通过JavaScript将textarea换行符转换为标记符全部内容,希望文章能够帮你解决通过JavaScript将textarea换行符转换为标记符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。