• 締切済み

スペースパディングのやり方を教えてください。

http://www.php.net/manual/ja/function.sprintf.php などを参考にして数値型の整形をしようと思います。 1005という数値を7桁にしたい場合 "__1,005" (先頭スペースは2つアンダーバーで表示) という感じで頭にスペースパディングを入れて 3桁ごとにカンマをつけたいのです。 まずはスペースを入れようと思い sprintf("%4d",1005); sprintf("%' 4d",1005); と試してみましたがスペースがひとつしか入りません。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=905463 なども参考にしましたがなかなかうまくいきません。 よい方法があれば宜しくお願いいたします。

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

7桁なら sprintf("% 7d",1005); ではないでしょうか

VIPFIRE
質問者

補足

ご指摘のとおりです。申し訳ありません。 実際には7でも試しております。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

<?php $num=1005; print str_pad(number_format($num), 7 , "_", STR_PAD_LEFT); ?>

VIPFIRE
質問者

補足

お返事ありがとうございます。 説明が下手で伝わらなかったようで申し訳ありません。 "__1,005" (先頭スペースは2つアンダーバーで表示)とありますが_はスペースでやりたいのです。 _やほかの文字を指定するとうまくいくのですが スペースだと2つ以上は1つとなってしまうのです。 ブラウザならば$nbspとすればいけそうですが pxdocを使用した帳票なので $nbspはきかないようです。 よろしければまた教えてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • sprintfで0ならスペースにしたい

    お世話になります。 sprintfを使って編集しています。 3桁で統一したいため、 $trm01 = sprintf("%3d",$trm01); のようにやっています。 $trm01が0の場合、3桁のスペースとしたいのですが。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • 【教えて!Goo】の【回答】参考URL欄にふたつのURLを記述できない・・・

    タイトルの通りです。 参考URL欄をカンマで区切っても、折り返し2つのURLを記述できないのですが・・・ http://www.goo.ne.jp/help/faq/community/oshiete_set.html 例えば http://oshiete1.goo.ne.jp/kotaeru.php3?q=286192 回答No.4です。

  • 先頭から連続する数値の桁数を取得したい

    oracleの関数で 例)項目 ADATA VARCHAR2(100) このADATAには (1)先頭から数字が8桁で次に文字(スペース含む)が入っているケース (2)先頭から数字が14桁で次に文字(スペース含む)が入っているケース (3)先頭の1バイト目から文字 という3つのパターンがあります。 レコードごとに(1)か(2)か(3)かを判別したいのですが、何かスマートな方法ないでしょうか? ×1文字ずつ数値かどうか比較し、ループする。 ○先頭から数値が何桁続いているか取得し、(1)8 (2)14 (3)0みたいに取得できる関数はないでしょうか? どなたかよい方法ご存知の方、ご教授ください。 以上よろしくお願い致します。

  • 前スペース補填

    お世話になります。 いろいろ編集パタン等勉強しているつもりですが、 分かりませんで、またここに来てしまいました。 ちょっと前に『前ゼロ』を教えていただきました。 今度は『前スペース』をやりたいのですが、 悩んでいます。 そもそも「printf」と「sprintf」との区別も付きません。 調べた結果では、7桁で前スペースにするには、 $kmk = sprintf("%7d",$kmk); でよいのかなと思います。 そして、$kmkが"123"なら”bbbb123”(bはスペース)となると思うのですが、 画面に表示されたのを見ると、単純に”123”となってしまいます。 以下に実際を表示しましたので、宜しくお願いします。 まず、やっていることは、 cgiで、有効桁だけでセットされているファイルを読み、 画面にリストします。 その際、前スペースにより各項目の位置を揃えたいというモノです。 【ファイル(@kariire)の中身】 47213<>1<>20080503<>3000<>50000<> 38221<>5<>20080508<>25000<>100000<> 18994<>1<>20080506<>2700<>385000<> 【cgiの中身】 foreach $line (@kariire) { local($kmk1,$kmk2,$kmk3,$kmk4,$kmk5) = split(/<>/,$line); $kmk1 = sprintf("%5d",$kmk1); #氏名コード $kmk2 = sprintf("%1d",$kmk2); #借入事由 $kmk3 = sprintf("%8d",$kmk3); #異動日 $kmk4 = sprintf("%6d",$kmk4); #借入額 $kmk5 = sprintf("%7d",$kmk5); #限度額残 &output; } sub output { print <<"STOPP"; $kmk1,$kmk2,$kmk3,$kmk4,$kmk5 <br> STOPP } 以上です、宜しくお願いします。

    • ベストアンサー
    • Perl
  • RedHat 9.0 でCGIが動いたのですが・・・

     再度、不満というよりも、不便なことが起きました・・・(爆  CGIは、「dos2unix」のコマンドを使うことによって解決したのですが、友人にスペースをあげているためにわざわざコマンドをするのは・・・  ということで、dos2unixをやらなくてもいい方法(スクリプト等??)はないでしょうか?  よろしくお願いします・・・。 参考になる・・・かな? 過去の質問 Red Hat Linux 9.0 でWebを公開したのですが・・・ http://oshiete1.goo.ne.jp/kotaeru.php3?q=614762 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.2 http://oshiete1.goo.ne.jp/kotaeru.php3?q=617184 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.3 http://oshiete1.goo.ne.jp/kotaeru.php3?q=618685 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.4 http://oshiete1.goo.ne.jp/kotaeru.php3?q=630574

  • ナベアツプログラム(3の倍数と3の付く数字)

    PHPを勉強中です。 勉強の為に思いついたものをPHPで書いてみようと思い、ネタが古いですが100までの数字を表示し、見やすいように3桁揃えで10ずつで改行して、3の倍数と3のつく数字を太字で表示するプログラムを書いてみました。なんとなくできたようなかんじなのですが、30だけ太字になりません。原因がわかる方がいらっしゃれば教えていただけたら嬉しいです。よろしくお願いします。 <?php for($i = 1; $i <= 100; $i++){ if($i % 10 == 0) { echo sprintf('%03d', $i)." "."<br>"; } elseif($i % 3 == 0) { echo('<strong>'.sprintf('%03d', $i)." ".'</strong>'); }elseif(strpos($i,"3") !== false) { echo('<strong>'.sprintf('%03d', $i)." ".'</strong>'); }else{ echo sprintf('%03d', $i)." "; } } ?>

    • ベストアンサー
    • PHP
  • 回答者のマナー?

    ここの質問に対する回答 http://oshiete1.goo.ne.jp/kotaeru.php3?q=62568 ここの回答のまるまるコピー! http://oshiete1.goo.ne.jp/kotaeru.php3?q=29341 参考URLぐらい書くべきだと思うんですが・・・ みなさんはどう思われますか?

  • 今の日本の選択  

    お世話になっております。 サリジェンヌです。 今、日本は重要な局面にいると思います。 今後の日本は弱者切り捨て型社会にすべきか、 国民皆を導いていくべきか皆様のご意見を伺いたく思います。また、前者の場合は、その方向に進んでいるように見えますが、後者の方向に針路変更したい場合はどうしたらよいとお考えでしょうか? 因みにサリジェンヌは後者派です(↓頑張ってきました(参考までに)) http://oshiete1.goo.ne.jp/kotaeru.php3?q=2254612 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2248694 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2245746 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2265951 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2265951 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2126838

  • 数値を桁区切りのセルに分割表示したいのです。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1420285 上記をみて自分でも考えてみたのですが、ちょっとうまくいきませんでした。 セルA2に入った 123,456,789 という数字を セル C2からK2に1桁ずつ表示させたいのですが、 セルA2は数値が変わるので桁が足りない場合、 例;セルA2が2,209,992 の場合    C2 0→桁なし空欄    D2 0→桁なし空欄 ※できればここに¥マーク    E2 2 2    F2 2 2    G2 0 0    H2 9 9    I2 9 9    J2 9 9    K2 2 2 と表示させたいのです。 桁数はC2~K2までの9桁までで、9桁フルにはいる場合は、B2に¥マークが入るようになるとベストです。 分かりづらい説明で申し訳ないのですが、どなたかいい方法がありましたら教えてください。よろしくお願いします!ifのネストになるのでしょうか・・・。     

  • 続ファイルのアップの仕方

    ホームページビルダーを買えばサーバースペースをくれるということですか? 関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=429990

ネットがつながらなくなった
このQ&Aのポイント
  • 3日ほど前から急にインターネットがつながらなくなった。
  • Wifiは繋がってるみたいだが「インターネットなし」とメッセージが表示される。
  • エレコム株式会社の製品についての質問です。
回答を見る