如何在不使用regexp的情况下从JavaScript中删除字符串中的HTML标记?

Moh*_*azy 0 javascript

我是编程新手,我正在解决这个问题.我已尝试使用string.slice()进行3次循环,但由于某种原因,它会打印一个空字符串.

你能否解释我的代码中发生了什么?为什么它打印错误的输出以及我如何纠正,而不是给我你正确答案的版本,以便我可以从错误中吸取教训.

测试输入是

<p><strong><em>PHP Exercises</em></strong></p>
Run Code Online (Sandbox Code Playgroud)

和输出应该是PHP练习

ps这不是一个PHP练习,我不会困惑

这是我的代码:

function remove(answer){ 

    var sen = answer.split("");
    var arr = [];
    for (var i = 0; i<answer.length; i++){
        if (answer[i] == "<"){
            for (var j = i; j<answer.length; j++){
                if (answer[j] == ">"){
                    for (var k = j; k<answer.length; k++){
                        if (answer[k] == "<"){
                            return answer.slice(j+1, k);                
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

num*_*8er 5

试试这个:

function stripTags(data)
{
   var tmpElement = document.createElement("div");
   tmpElement.innerHTML = data;
   return tmpElement.textContent || tmpElement.innerText || "";
}

var something = '<p><strong><em>PHP Exercises</em></strong></p>';
alert(stripTags(something));
Run Code Online (Sandbox Code Playgroud)

或者您可以使用string.js(string.js链接):

var S = window.S;
var something = '<p><strong><em>PHP Exercises</em></strong></p>';
something = S(something).stripTags().s;
alert(something);
Run Code Online (Sandbox Code Playgroud)
<script src="https://raw.githubusercontent.com/jprichardson/string.js/master/dist/string.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

如果您正在尝试nodejs:

var S = require('string');
var something = '<p><strong><em>PHP Exercises</em></strong></p>';
something = S(something).stripTags().s;
console.log(something);
Run Code Online (Sandbox Code Playgroud)

  • 假设它在DOM文档中运行可能存在缺陷,但无论如何它都很好:) (2认同)
  • @ num8er他从来没有提到任何客户端,只是Javascript.他可以在任何数量的Javascript引擎中工作(但几乎肯定不是,大声笑) (2认同)
  • @MohamedHegazy这个解决方案基本上利用(假定的)浏览器的功能将字符串转换为文档对象模型(DOM),它具有以易于使用的格式公开数据的属性(如`innerText`).虽然这并没有教您解析文本的任何内容,但它对于解决现实世界的问题来说是一个安全而干净的解决方案. (2认同)