gpt4 book ai didi

javascript - 通过 JavaScript 将 textarea 换行符转换为


标签

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:13 25 4
gpt4 key购买 nike

我正在使用 html 表单中的文本区域,我正在尝试使用 <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 做的就是用这 2 个标签重建 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 '&lt;';
case '>' : return '&gt;';
case '&' : return '&amp;';
case '"' : return '&quot;';
case '\'' : return '&apos;';
}
})
.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
}

您需要做的就是使用文本区域的值调用此函数。

var ta = document.getElementsByTagName('textarea')[0];
console.log(encode4HTML(ta.value));

关于javascript - 通过 JavaScript 将 textarea 换行符转换为 <p> 和 <br/> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com