我运行一个使用CSS伪元素的网站来插入文本.其中一个插入一个CSS计数器的值(因此,如果没有 CSS文本注入,它需要对系统进行大量的重新设计才能完成此操作).具体的CSS规则是:
.num_defn .theorem_label:after {
content: " " counter(definition, decimal);
counter-increment: definition;
}
Run Code Online (Sandbox Code Playgroud)
这将" 定义 " 转换为" 定义1 "(比如说).
但是,注入的文本不能被浏览器搜索.它没有看到1:如果我搜索"定义1"然后它找不到它,如果我搜索"定义.无论定义文本是什么",那么浏览器会高兴地突出显示除插入之外的行1.因此,如果您将粗体文本想象为突出显示,它将如下所示:
定义 1 .无论定义文本是什么
这不太理想!人们喜欢用数字来引用定义并说"在XYZ页面上看看定义1"(并且在没有超链接的情况下 - 很奇怪,我知道,但它确实发生了).
从而:
我经营一个旨在支持国际数学小组的论坛.我最近把它改为unicode以更好地支持国际角色.在调试此转换时,我发现并非所有unicode字符都被视为有效的XHTML(相关网站似乎是http://www.w3.org/TR/unicode-xml/).论坛软件在将帖子呈现给浏览器之前经历的步骤之一是XHTML验证/清洁步骤.似乎是一个合理的想法,在那个阶段它应该删除XHTML不喜欢的任何unicode字符.
所以我的问题是:
在PHP中有没有标准(或最好)的方法?
(顺便说一下,论坛是用PHP编写的.)
我想故障安全将是一个简单的str_replace(如果这也是最好的,我是否需要做任何额外的事情以确保它与unicode正常工作?)但这将涉及我必须通过XHTML DTD(或上述 -引用W3页面)仔细找出要在搜索部分列出的字符str_replace,所以如果这是最好的方法,有人已经这样做,以便我可以窃取,错误,复制,它?
(顺便说一句,导致问题的字符是U + 000C,'formfeed',(根据W3页面)是有效的HTML但无效的XHTML!)