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」を取り、その前に2つのスペースを追加し、すすぎ、合計の長さが33になるまで繰り返しますが、値を出力すると、単一のスペースが返されます。面白いのは、1 つのスペースを表示していても、33 文字を表示していなくても strlen 33 を返すことです。

これを理解するための助けをいただければ幸いです。

4

8 に答える 8

5

HTML では余分なスペースが除外されます。

余分なスペースを強制的に表示するには、'&nbsp;'ではなくを使用します' '

于 2011-04-01T15:43:20.103 に答える
3

ウェブブラウザに出力するとき、それは HTML として解釈されることに注意してください。また、HTML では複数の空白が 1 つにまとめて表示されます

特にXdebugvar_dump()拡張機能と組み合わせる場合は、関数を使用して、データをよりよく理解するか、テキストとして表示して、テキスト関連のコンテンツ タイプを送信する可能性があります。


ところで:文字列に一定量の文字が含まれていることを確認したい場合は、おそらく見てみたいと思うでしょうstr_pad()

于 2011-04-01T15:45:01.277 に答える
3

@TVK- は正しいです。HTML は複数スペースの空白を無視します - それは 1 つのスペースに変わります。

彼のソリューションに加えて、CSS 命令を使用white-space: preしてスペースを保持することができます。

于 2011-04-01T15:45:10.497 に答える
1

あなたにとって最も簡単なオプションは

  • 出力を<pre>タグでラップします
  • 各スペースを&nbsp;に置き換えます
于 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 に答える