PHPで0サプレスする(数字の先頭から0を削除する)
先日、「PHPで0パディングする(数字の先頭に0をつける)」という記事を書いたのだが、その時、逆に数字の先頭に0がついている時に0を削除する(0をのける、0を除く)方法はどうしていたのだろう、と思ったが、すぐに思い出せなかったのでしばらく放っておいた。
その後、しばらくしてすぐに思い出したのだが、それを書くのを忘れていた。
今、そのことを思い出したので、忘れないうちに書いておく。
《例》
$str = "000100";
echo $str;
//出力結果:000100
echo abs($str);
//出力結果:100
絶対値を求めるためのabs関数をゼロサプレス(数字の先頭から0を除く/のける)目的で使用するのは、abs関数の本来の役割とは違うためちょっと気になるのだが、他に方法が思いつかなかったのでもう2年ほどこのまま使っている。PHP4、PHP5どちらでも問題なさそうだった。
《2011年8月24日3時17分追記》
昨日、ltrimでもゼロサプレスができるというコメントを頂いたので、早速試してみた。
$str = "000100";
echo ltrim($str,'0');
//出力結果:100
うまくいった!この方法も良いと思った。
《2014年3月15日18時27分追記》
2週間ほど前に「echo ($str+0);」で行う方法についてコメントを頂いたので、試してみた。
$str=00100;
echo ($str + 0);
//出力結果:64
→うまくいかないようだ。
$str=00101;
echo ($str + 0);
//出力結果:65
→うまくいかないようだ。
$str=0011;
echo ($str + 0);
//出力結果:9
→うまくいかないようだ。
$str=0010;
echo ($str + 0);
//出力結果:8
→うまくいかないようだ。
$str=009;
echo ($str + 0);
//出力結果:0
→うまくいかないようだ。
$str=005;
echo ($str + 0);
//出力結果:5
→うまくいった。
$str=001;
echo ($str + 0);
//出力結果:1
→うまくいった。
「echo ($str+0);」とする方法だと、ゼロサプレスの方法としてはうまくいかないようだった。