辞める間際になって、発注管理用のシステムをPHPで組むことを要求される。
てか作るのはいいけど、これ誰が管理するんだろ?
備考欄を入力してもらって、全角24文字、半角48文字以上なら
自動的に改行されるようにしたんだけど、
全角23文字+半角1文字だと、
バイト数的には47バイトなので、改行されない。
んで次が全角だと、48バイト目は、その文字の半分しか入っていない状態なので、
当然のように化ける。
mb_substrでやると、24文字というのはできるけど、
半角でも24文字になってしまうし。
んなわけで、対応としてはこんな感じ。
$a="1234~50";
while($b=mb_substr($a,$count,1,"SJIS"))
で1文字ずつ切り出して、全角か半角か判断
※ここでSJISなど、エンコードを指定しないと、
mbなしの実行結果と変わらないみたい。
んで、Whileの中で、strlenを実行して、
バイト数を数えて、それを合計に足してやる。
全角なら、2、半角なら、1がそれぞれ加わる。
んで、0から始めたカウンターが指定文字数に達したら、
改行するなり、配列に加えるなら、Keyを1プラスするとか。
完全な私的メモですんません。
----------------------------
んなわけで、私的まとめサイト、立ち上げました。
↓↓↓↓↓↓↓↓↓
PHPスタジオ
てか作るのはいいけど、これ誰が管理するんだろ?
備考欄を入力してもらって、全角24文字、半角48文字以上なら
自動的に改行されるようにしたんだけど、
全角23文字+半角1文字だと、
バイト数的には47バイトなので、改行されない。
んで次が全角だと、48バイト目は、その文字の半分しか入っていない状態なので、
当然のように化ける。
mb_substrでやると、24文字というのはできるけど、
半角でも24文字になってしまうし。
んなわけで、対応としてはこんな感じ。
$a="1234~50";
while($b=mb_substr($a,$count,1,"SJIS"))
で1文字ずつ切り出して、全角か半角か判断
※ここでSJISなど、エンコードを指定しないと、
mbなしの実行結果と変わらないみたい。
んで、Whileの中で、strlenを実行して、
バイト数を数えて、それを合計に足してやる。
全角なら、2、半角なら、1がそれぞれ加わる。
んで、0から始めたカウンターが指定文字数に達したら、
改行するなり、配列に加えるなら、Keyを1プラスするとか。
完全な私的メモですんません。
----------------------------
んなわけで、私的まとめサイト、立ち上げました。
↓↓↓↓↓↓↓↓↓
PHPスタジオ