Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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_Html_Regex - Fatal编程技术网

如何使用Javascript替换Html标记

如何使用Javascript替换Html标记,javascript,html,regex,Javascript,Html,Regex,我使用Webservices获取html内容,但返回的html格式不正确,会破坏页面 它返回我需要更正的自动关闭锚标记 <p><a name="Example"/></p> 我正在尝试下面的代码来更正上面的代码 <p><a name="Example"></a></p> 但它不起作用- var obj1 = document.getElementsByTagName('html')[0];; obj1

我使用Webservices获取html内容,但返回的html格式不正确,会破坏页面

它返回我需要更正的自动关闭锚标记

<p><a name="Example"/></p>

我正在尝试下面的代码来更正上面的代码

<p><a name="Example"></a></p>

但它不起作用-

var obj1 = document.getElementsByTagName('html')[0];;
obj1.innerHTML = obj1.innerHTML.replace(/\/><\/p>/g, '></a></p>');
var obj1=document.getElementsByTagName('html')[0];;
obj1.innerHTML=obj1.innerHTML.replace(/\/>/g,'>

');
我不确定,但这似乎是我的正则表达式的问题。

我不认为问题(或至少最重要的问题)是你的正则表达式。更重要的是,浏览器必须解析格式错误的HTML,并且可能会以潜在的意外方式在内部切换。结果甚至可能因浏览器而异

下面的代码片段显示了浏览器试图解释您提供的输入html的结果。当我在Firefox v44.0.2中的堆栈溢出代码段中运行此代码时,
的输入显示为
/code>。请注意,代码至少有3种修改方式:

  • 插入正确的结束标记
  • p
    标记中的html在其外部重复
  • 复制的代码甚至在空白方面也有所不同
  • 注意:在我尝试任何进一步的操作之前

    因此,甚至很难知道正则表达式的输入是什么,这使得很难知道如何编写正则表达式或任何其他算法来进一步清理它。如果您可以确定输入html中的大多数错误都是同一类型的(例如,多个自动关闭锚定标记是唯一的问题),那么您可以使用正则表达式来“修复”它们。然而,如果html在很多方面都写得很糟糕,我想知道您是否需要想出另一种方法来清理代码(例如手动?!)

    var obj1=document.getElementsByTagName('div')[0];
    var inner=obj1.innerHTML
    .替换(//g,“”);
    document.write(“以下显示了“obj1.innerHTML”实际检索到的内容:

    ”; 文件。编写(内部)
    
    


    关于使用regexp解析html:始终存在
    ]*/>