Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式除去所有html标记,不包括<;br>&&书信电报;a类=';用户'&燃气轮机</a>;_Javascript_Html_Regex_Tags - Fatal编程技术网

Javascript 正则表达式除去所有html标记,不包括<;br>&&书信电报;a类=';用户'&燃气轮机</a>;

Javascript 正则表达式除去所有html标记,不包括<;br>&&书信电报;a类=';用户'&燃气轮机</a>;,javascript,html,regex,tags,Javascript,Html,Regex,Tags,我对regex比较陌生,但我的目标是从一个字符串中去掉所有html标记,不包括s和 我想我很接近了,但class='user'的结束标记在需要时仍被选为垃圾。正式地说是您,因为。另请参见一些噩梦材料 毫无疑问,您可以提出一些在“大多数”情况下或“合理”情况下工作的正则表达式,但如果您通过正则表达式清理用户输入,这将是不够的。它离试图通过复杂的文本替换和转义来替换SQL参数已经不远了;不管你有多聪明,正确的答案是使用不同的方法,因为某些弱点仍然存在 在本例中,该方法将使用HTML解析库读取文本,然

我对regex比较陌生,但我的目标是从一个字符串中去掉所有html标记,不包括

s和

我想我很接近了,但class='user'的结束标记在需要时仍被选为垃圾。

正式地说是您,因为。另请参见一些噩梦材料

毫无疑问,您可以提出一些在“大多数”情况下或“合理”情况下工作的正则表达式,但如果您通过正则表达式清理用户输入,这将是不够的。它离试图通过复杂的文本替换和转义来替换SQL参数已经不远了;不管你有多聪明,正确的答案是使用不同的方法,因为某些弱点仍然存在

在本例中,该方法将使用HTML解析库读取文本,然后删除

,以便于接近和提供信息。

如何:

<?php
$new_content = strip_tags($content, '<a><br>');

我建议您:

<(?!a class='user'|br|/a)[^>]+>
]+>
i、 例如,您可以在html中保留所有的
标记,这应该不会太麻烦


这是一个相当粗糙的过程,但是正则表达式引擎会立即跳过一段以
开头的文本,不要自己滚动。这是非常重要和不平凡的事情。这件事已经做了无数次了。重复使用它“我想使用这个正则表达式来清除contentEditable字段中不需要的html垃圾。”如果您处理的是contentEditable字段,为什么不直接遍历DOM树呢?HTML很难用正则表达式解析。(事实上,我认为这在技术上是不可能的,但是如果你真的很努力,你可以得到一个近似值。)大概,这只是你想要去除的标签,而不是它们元素的内容?如果
class='user'
不是
标签的第一个属性呢?如果锚定标记中有其他标记(例如
),该怎么办?如果在开始标记后的任何地方都有注释,您如何知道跳过其中出现的匹配项呢?我认为你一点也不接近——我不是想批评你,只是想在我的回答中强调一点,这在技术上是不可能的,即使是“足够好”以供随意使用也是非常非常困难的。毫无疑问,还有更多的问题我们两人都没有考虑过。@TJCrowder好的,如果regex是错误的选择,你能举一个例子,说明如何通过DOM操作使用javascript/jquery清理我的示例中的html吗?问题是我想去掉标记,但保留这些标记中的任何文本内容。我对jQuery很有经验,但可以很容易地看到如何做到这一点……这是一个javscript问题,而不是php。无论如何,谢谢。对不起,没有检查标记:(这个表达式工作得很好,只是它忽略了所有标记,而不仅仅是与匹配的标记