HTML中字符串的隐形分隔符

时间:2010-05-11 16:00:21

标签: html non-printing-characters

我需要一种方法来识别HTML标记中的某些字符串。我知道字符串是什么,但它们可能是文档中其他字符串的子字符串。为了找到它们,我输出一个特殊的分隔符(当前使用\032)。在页面加载时,我们浏览HTML并记录字符串的位置,并删除分隔符。

不幸的是,大多数浏览器会显示分隔符,直到我们找到并删除所有分隔符。如果可能的话,我想避免这种情况。是否有一个字符或字符串将保留在HTML内容中(因此注释不起作用)但对用户不可见?它也需要是一个不太可能出现在字符串旁边的东西,所以 之类的东西也不会起作用。

编辑:对不起,我忘了提到字符串属于属性,所以任何类型的标记都不起作用。

4 个答案:

答案 0 :(得分:137)

‌ - 零宽度非连接器(请参阅http://htmlhelp.org/reference/html40/entities/special.html

如果这已经出现在您的文字中,请加倍(例如:‌‌mytext‌‌


编辑以回应评论:适用于Firefox 3.请注意,您必须搜索实体的Unicode值。

<html>
<body>
    <div id="test">
        This is a &zwnj;test
    </div>

    <script type="application/javascript">
        var myDiv = document.getElementById("test");
        var content = myDiv.innerHTML;
        var pos = content.indexOf("\u200C");
        alert(pos);
    </script>
</body>
</html>

答案 1 :(得分:5)

您可以将它们插入<span>元素中。这仅适用于页内文本(不是属性等)。

否则,您可以插入一个空白字符,表示您的程序尚未作为HTML的一部分输出,例如制表符(\x09),垂直制表符(\x0b),裸露回车(\x0d) - 旁边没有换行符,Windows文本编码 - 或者只是一个空字节(\x00)。

答案 2 :(得分:3)

我想要插入的最好的东西,在浏览器上不可见,将是一对带有一些特殊ID的标记,如<span id="delimiter" class="Delimiter"></span>。这不会显示在内容上,而这可以出现在文档中。您无需删除它们。

答案 3 :(得分:0)

您可以使用left-to-right (LTR) marks。这是用于某种XSS测试吗?如果是这样,可能会感兴趣:Taint support for PHP