如何模拟尚未实现的<bdi> HTML标记?

fed*_*o-t 6 php unicode html5 bidi internationalization

的目的<bdi>在HTML5标签是双向文本隔离它的上下文.这正是我正在寻找的.

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

Welcome, Generic User. [Logout]
Run Code Online (Sandbox Code Playgroud)

使用从右到左的用户名会变成这个可怕的东西:

Welcome, [tougoL] .resU cireneG
Run Code Online (Sandbox Code Playgroud)

甚至更糟糕,取决于上下文,向后显示周围的一切(而不仅仅是用户的名字).

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

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

bob*_*nce 4

\n

如果使用从右到左的用户名,它会变成这样可怕的事情

\n
\n\n

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

\n\n

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

\n\n

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

\n