4

我有一些需要清理成固定长度格式的数据。我正在使用 PHP 来获取数据,将其隐藏,然后将其放回原处,但它没有按计划工作。在数据中间的每个片段中都有一个特定的点,应该有空格以将长度增加到适当的字符数量。我用来执行此操作的代码是:

while ($row = mysql_fetch_array($databasetable)) {
    $key = $row['KEY'];
    $strlength = strlen($key);
    while ($strlength < 33) {
        $array = explode(' TA',$key);
        $key = $array[0] . '  TA' . $array[1];
        $strlength++;
    }
}

它需要一个'TA'并在它之前添加两个空格,冲洗并重复直到总长度为33,但是当我输出该值时,它只返回一个空格。有趣的是,即使它显示的是一个空格,它也会返回一个 33 的 strlen,即使它没有显示 33 个字符。

任何帮助弄清楚这一点将不胜感激。

4

8 回答 8

5

HTML 将过滤掉多余的空格。

要强制显示额外的空格,请使用'&nbsp;'而不是' '.

于 2011-04-01T15:43:20.103 回答
3

请记住,当向网络浏览器输出时,它会将其解释为 HTML ;并且,在 HTML 中,几个空格显示为一个.

一种可能是使用该var_dump()功能,特别是如果与Xdebug扩展结合使用,以更好地了解您的数据 - 或将其显示为文本,发送与文本相关的内容类型。


顺便说一句:如果你想确保一个字符串包含一定数量的字符,你可能想看看str_pad()

于 2011-04-01T15:45:01.277 回答
3

@TVK- 是正确的,HTML 忽略了多个空格 - 它会将其变成一个空格。

除了他的解决方案,您还可以使用 CSS 指令white-space: pre来保留空格。

于 2011-04-01T15:45:10.497 回答
1

我认为对你来说最简单的选择是

  • 将输出包装在 <pre> 标签中
  • 用   替换每个空格
于 2011-04-01T15:47:23.070 回答
0

如果您正在呈现 HTML,则会忽略连续的空格。如果要强制渲染这些,请尝试使用&nbsp;

通常,一个接一个地使用多个不可破坏的空格是一个坏主意,除非您使用等宽字体,否则可能不会带来理想的结果。如果您想将某些文本移动到页面上的某个位置,请考虑使用边距

于 2011-04-01T15:47:45.003 回答
0

您可以告诉浏览器文本已预先格式化

  此文本将按其格式显示
     空格都应该出现。
         新线也将很明显
于 2011-04-01T16:12:44.813 回答
-1

你看过str_pad吗?就像是 :

str_pad ( 'mystring' , 33 , '  TA' , STR_PAD_LEFT );
于 2011-04-01T15:44:10.183 回答
-1

我觉得你可以使用 str_repeat

echo str_repeat("&nbsp;", 15);
于 2020-08-16T03:42:37.940 回答