使用JavaScript从HTML字符串中提取文本

使用JavaScript从HTML字符串中提取文本,javascript,html,string,text,extract,Javascript,Html,String,Text,Extract,我试图使用JS函数(字符串作为参数传递)获取HTML字符串的内部文本。代码如下: 函数提取内容(值){ var内容_holder=“”; 对于(变量i=0;iHelloW3C-OP真的想要什么?不是你好W3C?不,不需要空格:)很抱歉没有提到它!添加了一个可以在节点之间添加空格的版本。delete span什么也做不了。@torazaburo,谢谢,我不确定。编辑。回答不错+1,但是你的答案和Rick Hitchcockanswer@shariqueansari,DOMParser是“实验技术

我试图使用JS函数(字符串作为参数传递)获取HTML字符串的内部文本。代码如下:

函数提取内容(值){
var内容_holder=“”;
对于(变量i=0;i'){
继续;

while(value.charAt(i)!='您需要数组来保存值

  function extractContent(value) {
var content_holder = new Array();

for(var i=0;i<value.length;i++) {
    if(value.charAt(i) === '>') {
        continue;
        while(value.charAt(i) != '<') {
            content_holder.push(value.charAt(i));
            console.log(content_holder[i]);
        }
    }
}
}extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>");
函数提取内容(值){
var content_holder=新数组();

对于(var i=0;i您可以临时将其写入位于页面之外的块级元素。类似于以下内容:

HTML:


JavaScript:

<script type="text/javascript">
function extractContent(value){
        var div=document.getElementById('tmp');
        div.innerHTML=value;
        console.log(div.children[0].innerHTML);//console out p
}

extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>");
</script>

函数内容(值){
var div=document.getElementById('tmp');
div.innerHTML=值;
console.log(div.children[0].innerHTML);//控制台输出p
}
提取内容(“你好”

”;
使用此regax删除html标记,并仅将内部文本存储在html中

它显示HelloW3c仅检查它

var content_holder = value.replace(/<(?:.|\n)*?>/gm, '');
var content\u holder=value.replace(//gm,”);
试试这个:-


函数内容(值){
var div=document.createElement('div')
div.innerHTML=值;
var text=div.textContent;
返回文本;
}
window.onload=function()
{
警报(提取内容(“Hello

”); };
创建一个元素,在其中存储HTML,并获取其

函数提取内容{
var span=document.createElement('span');
span.innerHTML=s;
返回span.textContent | | span.innerText;
};
警报(提取内容(“Hello

”);
一行(更准确地说,一条语句)版本:

是实现所需结果的一种非常好的技术,但有时我们不想加载DOM。因此,简单的解决方法是使用正则表达式:

let htmlString = "<p>Hello</p><a href='http://w3c.org'>W3C</a>"
let plainText = htmlString.replace(/<[^>]+>/g, '');
让htmlString=“你好

” 让明文=htmlString.replace(/]+>/g',);

如果您希望结果是字符串,但拥有数组将允许用户访问每个结果/值,则不需要数组。您还没有修复操作代码中的基本逻辑错误。您测试过吗?我猜“没有”正确的方法,但您不需要DOM中的元素来执行此操作。只需使用
var div=document.createElement('div')创建一个元素
并从那里继续。此外,嵌套的HTML元素(如
HelloBob

..
)也会失败。它会将标记保留在
p
元素内。由于
继续
指令,您的
while
循环永远无法到达。请尝试使用“调试器”跟踪代码--你这样做了吗?可能的重复也很相似:这回答了你的问题吗?你测试过吗?它无法提取“W3C”应该是这样的。请使用字符串
Hello,BuggyWorld

尝试您的解决方案。请给我一个原因?如果您要使用regexp,那么一个更简单的版本将是
/
,或
/
。您的
m
标志没有任何作用;它与
^
$
的行为有关。输出
>HelloW3C
-OP真的想要什么?不是
你好W3C
?不,不需要空格:)很抱歉没有提到它!添加了一个可以在节点之间添加空格的版本。
delete span
什么也做不了。@torazaburo,谢谢,我不确定。编辑。回答不错+1,但是你的答案和
Rick Hitchcock
answer@shariqueansari,
DOMParser
是“实验技术”但是很可能会被添加到规范中。它的HTML支持在IE10+中工作。我的原始答案在IE9+中工作,但我现在更新了它以支持IE8。DOMParser现在有广泛的支持,请看,希望它在nodejs上工作,但它没有。最终使用了我们可以使用此方法按id提取一些内容吗,如:document.getElementById?我知道这是一个v非常旧的注释,但是您能解释一下表达式/]+>/g的含义吗?我很难理解每个字符的含义。@Kelly您所指的符号是正则表达式。它有点像一种用于解析文本的微型编程语言。这里有一个链接,您可以从中了解有关每个符号的更多信息:它本质上说是在它和>之间找到并删除它们。最有用的是regex,它是程序员最好的工具/迷你语言之一。不同的情况下使用不同的技术,这是我的案例的正确方法,Telegram的机器人开发不需要innerHTML或web开发中需要的东西。
function extractContent(html) {

    return new DOMParser().parseFromString(html, "text/html") . 
        documentElement . textContent;

}
let htmlString = "<p>Hello</p><a href='http://w3c.org'>W3C</a>"
let plainText = htmlString.replace(/<[^>]+>/g, '');