使用无效的HTML标记

时间:2010-10-07 12:49:12

标签: html

我有一组HTML代码,我想知道如何包装代码,以便浏览器解释它是正确的,并且独立于其他代码。

我想我应该举个例子:

x = <a href="stackoverflow.com">Something

y = <b>Else</b>

我打印x,然后是y,浏览器会认为y是x中定义的链接的一部分。如何强制浏览器独立于y解释x;就是这样,我怎么能包裹x和y?

我不知道它是否相关,但我使用的是Python。

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您不希望粗体标记成为其中的一部分,请关闭锚标记。

x = <a href="stackoverflow.com">Something</a>

如果您没有关闭锚点,大多数浏览器都会认为文档的其余部分包含在此标记中。


此外,我是否可以建议您使用<strong>代替<b>,因为<b>不是语义。

答案 1 :(得分:0)

现代浏览器可以很好地“清理”破碎或无效的HTML代码。显然,虽然有很多情况下作者的意图不是浏览器所解释的。您的示例很好:浏览器应该在何处插入结束</a>标记?浏览器内部有一系列规则来决定在何处执行此操作(在您的情况下,不会为您提供所需的内容)。

可靠地让浏览器完全想要你想要的渲染的唯一方法是确保你发送到浏览器的内容是正确的!在这种情况下,请单独查看HTML字符串,并在需要时添加缺少的结束标记。

(根据HTML的复杂程度,可能有很多方法。您可以通过手动检查每个字符串来解决,或者如果HTML更复杂,您可能需要使用解析器。 )

答案 2 :(得分:-2)

您必须找到HTML代码段中的所有代码,并确保它们已正确关闭。

一个简单的解决方案是使用这个正则表达式:r <[^>]+>和这个伪代码:

find next match:
    if match ends with `/>`:
        continue
    if match starts with '</':
        Pop element from stack and make sure that the name matches the element from the match
    else:
        Push element name on stack

for each element on stack:
    print '</%s>' % element.name