php - 模拟尚未实现的 <bdi> HTML 标签的方法?

标签 php html unicode internationalization bidi

目的the <bdi> tag in HTML5是将双向文本与其上下文隔离开来。而这正是我要寻找的。

从左到右的用户名显示如下:

Welcome, Generic User. [Logout]

使用从右到左的用户名会变成这样糟糕的事情:

Welcome, [tougoL] .resU cireneG

或者根据上下文甚至更糟,向后显示周围的所有内容(不仅仅是用户名)。

问题是没有浏览器支持 <bdi>还没有标记,所以我在徘徊,有没有办法模拟它?什么 HTML 标签也可以隔离它?我知道<span><div>不要。

我不想删除所有 BIDI 字符,但在我看来,正确显示我的网站的重要性 > 双向语言用户参与的权利。

最佳答案

With a right-to-left username it would turn into this awful thing

不应该。 (例如)阿拉伯用户名中的文本将从右到左呈现,但不会影响其周围的拉丁文本的流动。

您可能会想到的问题是当用户名包含 Unicode BDO(双向覆盖)控制字符时。这会影响它后面的所有内联文本,这对于将文本模板化为 HTML 的网站来说通常是一件坏事。

这个问题最简单的解决方案可能是输入过滤以删除控制字符,包括普通的 ASCII 字符 (0x00–0x1F) 和 Unicode 字符。 Unicode 和 W3 指定一组字符不适合在 this Note 中的标记中使用哪些 Web 应用程序通常希望从数据中删除。它包括 BDO 字符和其他几个可能导致奇怪的效果泄漏到他们自己的文本范围之外的字符。

关于php - 模拟尚未实现的 <bdi> HTML 标签的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012939/

相关文章:

javascript - 有没有办法对普通用户隐藏图像网址?

php - 允许用户提取临时数据然后删除表数据( header 保留)?

php - mysql 查询中出现未知列错误

html - 如何在 Clarity <clr-dg-footer> 中左对齐一些内容

Java 读取带有补充 unicode 字符的字符流

php - 具有数组值的 Doctrine DBAL setParameter()

android - 使用 android 本地语言编写 css

jquery - 使用 DIV 的内容作为 HTML 页面的标题?

c++ - C++代码中的UTF用法

html - 印度卢比符号