use*_*ca8 4 html css whitespace text tinymce
我相信这不应该是可能的.不知何故,我的HTML标记中的段落中的多个空格不会折叠.他们是不是 ,不是一个<pre>标签,不设置white-space: pre-wrap;或white-space: pre;与该行为不通过强制改变style="white-space: normal;"的元素.
我的理解是,这些是保留空白的唯一三种方式,并且可以使两个或多个空格以HTML格式显示.
所以问题是:还有什么可能导致顺序空格显示为多个空格?一定有别的东西-但我不能去找它,直到我知道它是什么,我每次找源只是谈论 ,<pre>和white-space: pre-wrap;或white-space: pre;
密钥编辑:使用Firebug我尝试删除一些有问题的空白并再次输入.从键盘删除并重新输入时,空格表现正常 - 浏览器中没有意外的空格.所以它必须是一些角色,在视图源,文本编辑器等中显示为一个普通的空间,但实际上表现得像 .什么可以,而且至关重要的是,如何识别它以将其删除?违规输入的原始来源是Wysiwyg编辑器TinyMCE所以我正在添加该标签...
更多细节:我有一些包含段落文本的HTML,包含多个空格,如下所示(在...之间直接从Firefox视图源复制):
<p> blah blah.... nothing more than a ... blah blah </p>
Run Code Online (Sandbox Code Playgroud)
如您所见,这些是常规空间,而不是 .该文档在 其他地方,它们在视图源中显示,因此它们不会 以某种方式伪装成源中的普通空间.
此外,CSS 未设置为 white-space: pre;或类似的东西:
white-space: normal;段落对空格没有任何影响.该规则确实显示在Firebug'Computed'面板中,因此它正在应用.white-space: pre-wrap;段落会导致其他更改,但不会更改这些多个序列空间.例如,它会在所选文本的段落中的每个换行符的末尾显示一个额外的空格.所以它绝对不是以某种方式被悄悄地设定white-space: pre-wrap; 文档中没有任何<pre> 标签.查找<pre源觉得没有什么.
因此它应该在浏览器中显示每个单词之间有一个空格.它没有.它显示多个空格,就像它是<pre>或 或 white-space: pre;.但这不是其中任何一个.
还有必须得到一个的一些其他的方式 white-space: pre;一样的效果,我不知道.有什么其他方法来预先格式化空白并阻止多个空间崩溃吗?可能导致这种情况的原因.
一些背景说明:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML+RDFa 1.1//EN">我猜你的源代码中有问题的空格字符不是SPACE(U + 0020),而是实际上是NO-BREAK SPACE(U + 00A0).在视觉上,它们看起来完全相同,但是如果您在十六进制编辑器中查看源代码(向您显示文件中的各个字节),您将看到这些字符的不同编码.
编辑1
这个PHP代码应该找到并用常规空格替换有问题的字符:
$strNoBreakSpace = mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');
$strNormalSpace = mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');
$strInput = str_replace( $strNoBreakSpace, $strNormalSpace, $strInput );
Run Code Online (Sandbox Code Playgroud)
编辑2
一种创建两个空格字符的简单方法:
$strNoBreakSpace = json_decode('"\u00A0"');
$strNormalSpace = json_decode('"\u0020"');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4587 次 |
| 最近记录: |