/**
* Native javascript function to emulate the PHP function strip_tags.
*
* @param {string} str The original HTML string to filter.
* @param {array|string} allowable_tags A tag name or array of tag
* names to keep. Intergers, objects, and strings that don't follow the
* standard tag format of a letter followed by numbers and letters will
* be ignored. This means that invalid tags will also be removed.
* @return {string} The filtered HTML string.
*/
function strip_tags(str, allowable_tags) {
allowable_tags = [].concat(allowable_tags);
var keep = '';
allowable_tags.forEach(function(tag) {
if (('' + tag).match(/^[a-z][a-z0-9]+$/i))
keep += (keep.length ? '|' : '') + tag;
} );
return str.replace(new RegExp(']+>', 'ig'), '');
}
var regex = / <(?! \ s * \ /? \ s * p \ b) [^>] *> / gi; // deletes all HTML except
var regex = / <(?! br \ s * \ /?) [^>] +> / gi; // deletes all HTML except for
您的脚本运行良好!干杯!
这太酷了,我喜欢它
function strip(html)
{
var tmp = document.createElement("DIV");
tmp.innerHTML = html;
return tmp.textContent || tmp.innerText;
}
这对我来说甚至更好。没有特殊字符等问题……
那真是糟糕的建议!
如果由于某些原因(例如用户恶意意图)html 参数包含一个脚本标签,那么您现在已经打开了 XSS 攻击的可能性!!!
不要将 DOM 用于不需要它的东西。
此外,DOM 非常 慢。
此解决方案非常适合在 JS Alert 窗口中使用段落中的内部内容 - 它有效地去除了 nbsp 和 em,
谢谢
Pushpinder,
太好了。效果很好
如果您不需要支持 IE6,可以尝试直接使用 DOMParser,因为它不会下载图像或执行脚本
现在,如果您运行类似
stripHtml("<img onerror="alert(\"could run arbitrary JS here\")"" src="bogus">");
的代码,它不会导致问题,同时仍然允许浏览器完成工作。单行代码
如果您碰巧使用的是 jQuery,这是一个 单行代码
txt=$(document.createElement("DIV")).html('<b>Hi</b>').text();
嘿!!!..这太荒谬了..
感谢您提供如此棒的示例
谢谢,这正是我需要的(而且非常简洁!)
谢谢!关于正则表达式的一个快速说明:“i”在这里并不需要,因为没有字符需要区分大小写。但是,它无论如何都会完全按照您的预期执行。
不错,但括号是多余的。
.replace(/<[^>]+>/ig,””);
谢谢
您好 :)
我看到了您的联系表格,我必须说我非常喜欢它!
您有教程或类似的东西吗?它太棒了:)^
希望收到您的消息,
一位法国读者,
Florian
感谢您的脚本 :)
@Ricard: 如果你想复制联系表单,只需查看源代码或将此页面保存到本地即可;)
美丽的网站,感谢您提供如此棒的示例
强烈建议使用 /i 进行区分大小写。
在使用 contenteditable 时,IE 会生成大写标签,mozilla 只会创建小写标签……要去除它们,您需要区分大小写。
DScout,这是不正确的。正则表达式中没有指定字母字符 - 因此,区分大小写修饰符不会影响任何内容。
您好
我有以下代码
var text = ‘[$ ssIncludeXml(docName,”wcm:root/wcm:element[@name=’innerpage_content’]/text()”) $]’;
var StrippedString = text.replace(/(]+)>)/ig,””);
其中 ‘[$ ssIncludeXml(docName,”wcm:root/wcm:element[@name=’innerpage_content’]/text()”) $]’
是 Idoc 脚本,它从占位符中获取 HTML 块。但我正在第一行得到“未终止的字符串文字”错误。
我要做的是去除或剥离所有 HTML 标签,并从该标记中获取纯文本。
请告诉我是否有任何解决方案。
谢谢
效果很好,但不会去除空格……
谢谢!这对我来说非常有用,我认为这对每个人都有用。
再次感谢!
是的,这个解决方案删除了各种各样的 HTML,段落、换行符、内联样式等等等等
这在 IE 中不起作用。请提供在所有浏览器中都能正常工作的去除标签的 javascript 解决方案
感谢您的脚本
效果很棒
我正在尝试它
var message;
但它不起作用,并显示
无法调用未定义的“replace”方法
想知道如果我只想从一串文本中删除 href 标签,而不是删除所有标签,该如何实现?我正在尝试从网站检索一页文本,但我只想获取带格式标签(p、ul、li)的纯文本。
希望这说得通,提前谢谢。
这太棒了!谢谢!
你的“\S”不见了……或者没有?
\S 表示非空格,^> 表示非大于号,所以你修改后的正则表达式只确保不会替换单个字符标签。
太好了!谢谢!
谢谢,
它运行良好。
酷!这完美地运行着……
< b r / > 或 < h r / > (自闭合标签)怎么样?
酷……好例子。
看起来“newInput”什么也没做?所以要么是多余的,要么是代码有问题。
我已经使用JavaScript正则表达式开发了相同的功能。
它将剥离所有 HTML 标签,除了用户在排除列表中提供的标签。
源代码也在 GitHub 上提供。
查看这里。 HTML 标签剥离器
不错,但这并不安全……我更愿意使用 jQuery。
$("<div/>").text('<img alt="a>b" src="a_b.gif" />').text();
document.body.innerText
<a onclick=”return a > b”> ~ 失败
但这段代码在处理 HTML 表格内容时效果不佳。
如何剥离所有标签,除了锚点和图像标签?
你可以轻松地省略大小写敏感性/i和分组()
使用 jQuery
jQuery(stringWithTags).text()
jQuery(stringWithTags).text();
这就是我想要的。感谢……
在 AngularJS 中不起作用。
可能是我在线找到的最简单的解决方案。非常感谢您。它运行良好!
这是我找到的最佳解决方案
http://phpjs.org/functions/strip_tags/
这相当于 PHP strip_tags 函数。
难道没有人看到这个解决方案会极大地影响这段文字吗?
舍入金额 < 3 对人们来说在计算中更容易使用,因为它们比 >= 3 的数字小得多。
变成:舍入金额 =3
这个更好;phpjs.org/functions/strip_tags/
使用 DOM 剥离 HTML 的安全方法。
我将一个函数组合在一起,允许保留一些标签,类似于 PHP 函数的工作方式。
与 PHP 一样,它带有以下两个警告
和
已经实施了额外的检查,以尽可能防止删除无效标签,方法是确保每个标签的开始都以潜在的标签名称开头;它不考虑属性中的大于号符号。评论将被保留,但可以使用类似的正则表达式删除。
嗨!
我不想打扰你,但看起来你的函数的最后一行不知何故被破坏了 - 那不是一个有效的正则表达式。你有没有可能修复它?
嗨,伙计们!我目前遇到了一个与你这里提到的正则表达式/替换函数相关的 JavaScript 问题。
我想在一些 HTML 标签周围添加一些文本。
为此,我使用了这个函数
这里所有标签都被删除了。
但我想要保留<和>标签,并找到了这两个对我有用的独立函数
您知道如何将这两个条件组合到一个中吗?
这不仅删除了违规字符,还删除了其余文本。
您正在处理的 HTML 是什么?
为什么不使用 Element.textContent?
这正是我需要的……谢谢
.replace(/(<([^> ]+)>)/ig, "")
在尖括号后添加了一个空格,以允许像这样:“< heey >”
另一个技巧:使用浏览器的删除标签功能
您好,先生。请我想知道我是否可以得到您的帮助。
我有一个前端提交,用户可以在其中分享他们的文章,但他们想要删除表单中的所有链接。
有没有办法只对非管理员用户提交的帖子执行此操作?
谢谢
我已经设置了前端帖子,它正常工作,除了我正在寻求帮助的方面。