• ベストアンサー

文字数制限について

文字数制限について教えてください。 下記のようにPHPで設定しているのですが、 全部数字を入れた場合、日本語よりもかなりオーバーしてしまいます。 バイト数が違うからだと思いますが、 日本語と同じ幅で表示する方法はありますか? $val['aaa'] = mb_strimwidth($val['aaa'], 0, 84, "...", 'UTF-8'); 現在 あああ 111 ↓ 希望 あああ 111111 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

手元のxampp環境で試してみましたが、問題ありませんね。 <?php $str = 'あいうえおかきくけこ'; print mb_strimwidth($str, 0, 11, "...", 'UTF-8') . "<br />"; $str = '12345678901234567890'; print mb_strimwidth($str, 0, 11, "...", 'UTF-8') . "<br />"; というソース(utf-8)で、出力結果は あいうえ...<br />12345678...<br /> となります。文字エンコーディングを間違うと日本語の処理がおかしくなりますが、asciiは変化ありません。 どういう環境で試されていますでしょうか?

a-----n
質問者

お礼

ご連絡ありがとうございます。 環境はxamppです。 説明を間違えました。 shimixさんの言うとおり、間違えありません。 もう一度質問します。 またよろしくお願いします。

関連するQ&A

  • 文字数制限と横幅について

    横幅の設定についての質問です。 下記のように設定しています。 $val['aaa'] はDBより、foreachでまわしています。 たとえば、下記のような111...とあああ...の場合、 あああの場合は、width:160pxで改行されます。 が、111の場合は改行されずに、160pxを無視してしまいます。 無視しない方法はありますでしょうか? $val['aaa'] = mb_strimwidth($val['aaa'], 0, 30, "...", 'UTF-8'); <div style="width:160px;"> <a href="./pop.php>111111111111111111111111111111 </a> </div> <div style="width:160px;"> <a href="./pop.php>ああああああああああああああああ</a> </div> よろしくお願いします。

    • ベストアンサー
    • PHP
  • 日本語と数字を、同じように表示する方法

    日本語と数字を、同じように表示することができずに困っています。 (改行したいです) 下記のようなPHPを書いています。 $val['aaa'] = mb_strimwidth($val['aaa'], 0, 84, "...", 'UTF-8'); ■日本語表示の場合 内容内容内容内容内容 内容内容内容内容内容 内容内容内容内容内容 内容内容内容内容内容... ■数字表示の場合 11111111111111111111111111111111111111111111111111111111111111111111111111111111... 希望は下記になります。 ■日本語表示の場合 内容内容内容内容内容 内容内容内容内容内容 内容内容内容内容内容 内容内容内容内容内容... ■数字表示の場合 11111111111111111111 11111111111111111111 11111111111111111111 11111111111111111111... 希望のように表示することは可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで指定文字数で切りたい場合

    PHPで、全角と半角の混在した文字列で 全角=1文字、半角=0.5文字として換算した文字数を切り詰めたい場合は どうすれば良いのでしょうか?? 改行コードなどもカウント出来たら尚良いです! 環境は PHPのソースコードはutf-8 入出力はShift-jis ・mb_substrは、半角も1文字とカウントされてしまいます ・mb_strimwidthは、文字幅なので今回は使い物になりません ・mb_strcutはなぜかうまく動いてくれません $str = mb_convert_encoding($str,'shift-jis','utf-8'); $str = mb_strcut($str,0,1000,'shift-jis'); $str = mb_convert_encoding($str,'utf-8','shift-jis'); 500文字になるのを期待したが、出力された文字は512文字になってしまった 全角=1文字、半角=0.5文字の検証は以下のサイトにて行いました http://www.luft.co.jp/cgi/str_counter.php お忙しい中恐縮ですが、 わかる方お教えくださいませ!

    • ベストアンサー
    • PHP
  • PHP(UTF-8)で作ったフォームで、メールが文字化けします。

    PHPで問合せフォームを作っていて、最初は文字コードが”EUC”でうまく動作していました。ところが、サーバを変えたら文字化けしてしまい、問い合わせたところ”UTF-8”に変えてくださいと言われました。 単純に”EUC”だったところを”UTF-8”に修正したら、HP上の表示は直ったのですが、送信されるメールが文字化けしたままなのです。(「?????」という感じで) mb_language("uni");  を入れたらいいのだろうというとこまでは辿り着いたのですが、どこに入れてもうまくいかず・・・。 http://www.infinity-dimensions.com/blog/archives/000114.html もともと私が作ったプログラムではなく、PHPの知識がないため困っています。 自分なりに調べて、いろいろ試してもわかりませんでした。 助けていただける方がいらっしゃいましたら、よろしくお願いいたします。 -------------(現在のソースです)------------- <?php foreach($_POST as $key => $val){ if(is_array($val)){ continue; } $val = mb_convert_kana($val, "KVas","UTF-8"); $val = trim($val); $val = stripslashes($val); $val = htmlspecialchars($val); $_POST[$key] = $val; } ?> <form method="post" action="<?php print($_SERVER["PHP_SELF"]); ?>">

    • ベストアンサー
    • PHP
  • 文字数を正しくカウントし、長さを整える

    現在phpでアプリを作成しているのですが、入力の際に文字数を制限したいと思っています。たとえば200文字までの入力に対し213文字入力されたとします。その場合ははじめの1文字目から200文字目を残し、のこりを破棄したいと考えています。 また、1文字のカウントの際、普通に行うと半角英数字の1文字の入力と日本語の1文字の入力では日本語が2バイトになってしまいます。そうではなくて言語に関係なく1文字として認識するようさせるにはどうしたらいいのでしょうか?宜しくお願いします。

    • ベストアンサー
    • PHP
  • UTF-8での日本語のバイト数は?

    UTF-8での全角日本語のバイト数はいくつになるのでしょうか? どうやら3バイトと4バイトの時があるみたいのなのですが

  • バイト数の入力制限の記述の仕方。

    こんにちわ。いつもお世話になっています。 もし、フォームに入力された。バイト数が5以下だったらAという処理。バイト数が6以上だったらBというしょりへ。。という記述をしたいのですが、文字数制限の記述のしかたがわかりません。数字限定だったら if($name < 5){'Aの処理'}というふうにできると思うのですが、アルファベットのときはこれはできないと思うんですね・・・文字数(バイト数)の制限ってどのようにかけばいいのですか?教えてください。

    • ベストアンサー
    • Perl
  • メールの1行の文字数制限について

    フォームから入力された文字をメールで送信する仕組みをPHPで作成しているのですが、1000文字を超える文章を改行せずに入力して、mb_send_mail関数でメールを送信したところ、1000文字以降が文字化けしてしまいました。(メールサーバはsendmailを使用) メールに関する1行の文字数制限はRFCにて規定されているようなのですが、これを回避する方法はないでしょうか?

    • ベストアンサー
    • PHP
  • 文字型データのバイト数をカウントするには

    Java Scriptで文字型データのバイト数をカウントする関数は何でしょうか? PHPでいうmb_strlen()のようなものです。 どうぞよろしくお願いいたします。

  • phpでマルチバイトを含む文字列のバイト数を求めることは可能でしょうか?

    例として次のような文字列のバイト数を求めたいです。 あaいbc54うえ strlenは正確にバイト数が返ってきませんでした。 mb_strlenでは文字数が返ってきてしまうため、使えません(あくまでもバイト数です。) 結果個人的にmb_strwidthを使うことに行き着いたのですが、mb_strwidthは文字幅を評価する関数と表記されていました。 何パターンか実際にテストしてみた結果mb_strwidthでも動作に支障はなかったのですが、mb_strwidthを使うという方法で 正しいのでしょうか? もし、バイト数を数えるよい方法がございましたら教えていただきたいです!よろしくお願いします。

    • 締切済み
    • PHP