Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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标签';除了特定的';标签';(还有它的孩子们呢?)?_Javascript_Ecmascript 6 - Fatal编程技术网

给定一个字符串,如何使用JavaScript删除所有';HTML标签';除了特定的';标签';(还有它的孩子们呢?)?

给定一个字符串,如何使用JavaScript删除所有';HTML标签';除了特定的';标签';(还有它的孩子们呢?)?,javascript,ecmascript-6,Javascript,Ecmascript 6,给定一个类似HTML的字符串(但实际上不是HTML),我如何使用JavaScript删除除特定“标记”(及其“子项”)之外的所有“HTML标记” 例如,如果我有以下字符串: '<p><span>Sample data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><strong>hello world<

给定一个类似HTML的字符串(但实际上不是HTML),我如何使用JavaScript删除除特定“标记”(及其“子项”)之外的所有“HTML标记”

例如,如果我有以下字符串

'<p><span>Sample data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><strong>hello world</strong><math><msqrt><mo>x</mo></msqrt></math></div></p>'
“样本数据:y你好世界x

我只想保留原始文本和“数学标记”(以及每个“数学标记”中的所有内容),我该怎么做呢

const html = '<p><span>Sample data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><strong>hello world</strong><math><msqrt><mo>x</mo></msqrt></math></div></p>';
const result = stripNonSpecifiedHTML(html, 'math');
// expected result:
// 'Sample data: <math><msqrt><mo>y</mo></msqrt></math>hello world<math><msqrt><mo>x</mo></msqrt></math>'

function stripNonSpecifiedHTML(html, tagNameToKeep) {
   // ...
}
consthtml='示例数据:yhelloworldx

; const result=stripNonsspecifiedHTML(html,“数学”); //预期结果: //'样本数据:yhello worldx' 函数stripNonsspecifiedHTML(html,tagnameToKep){ // ... }
虽然不是
html
,但此字符串可以解析为
xml

const html = '<p><span>Initial data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><math><msqrt><mo>x</mo></msqrt></math></div></p>';

let parser = new DOMParser(),
    xmlDoc = parser.parseFromString(html, 'text/xml');

虽然不是
html
,但此字符串可以解析为
xml

const html = '<p><span>Initial data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><math><msqrt><mo>x</mo></msqrt></math></div></p>';

let parser = new DOMParser(),
    xmlDoc = parser.parseFromString(html, 'text/xml');

您可以按照以下思路做一些事情:

html.split('<math>')[1].split('</math>')[0]
html.split(“”)[1]。split(“”)[0]

您可以按照以下方式做一些事情:

html.split('<math>')[1].split('</math>')[0]
html.split(“”)[1]。split(“”)[0]

它看起来很糟糕,但它可以工作(有一些限制):

  • 将字符串按
  • 删除每秒钟元素中的所有html标记
  • 在每秒钟的元素周围添加
  • 将数组重新连接到字符串中
consthtml=
“初始数据:yhello worldx

” var text=html.split(“”) .map(t=>t.split(“”)).flat() .map((t,i)=>{return(i%2==0)?t.replace(//g',):t}) .map((t,i)=>{return(i%2==0)?t:''+t+''}) .加入(“”); console.log(文本);
//输出:初始数据:y hello worldx
它看起来很糟糕,但效果很好(有一些限制):

  • 将字符串按
  • 删除每秒钟元素中的所有html标记
  • 在每秒钟的元素周围添加
  • 将数组重新连接到字符串中
consthtml=
“初始数据:yhello worldx

” var text=html.split(“”) .map(t=>t.split(“”)).flat() .map((t,i)=>{return(i%2==0)?t.replace(//g',):t}) .map((t,i)=>{return(i%2==0)?t:''+t+''}) .加入(“”); console.log(文本);
//输出:初始数据:y hello worldx
请参见。请参见。我认为您可以使用
text/html
使用HTML5的解析进行解析?@loganfsmyth您可以做到这一点,它应该可以工作。我只是想,如果HTML解析器不喜欢其中的一些标记,XML可能会更好。我认为您可以使用
text/HTML
来使用HTML5的解析进行解析?@loganfsmyth您可以这样做,它应该可以工作。我只是想,如果HTML解析器不喜欢某些标记,XML可能会更好。