よろしくお願いいたします。
カレンダーを利用した宿の空室状況を作っています。
「各日付」の下に空室状況を表す○、×等の「マーク」その下に祭日やイベントなどの「コ
メント」を表示し、これらを編集します。
上記の「マーク」や「コメント」の内容は月毎に用意したテキストファイルからfopen関数で呼び出し、fgets関数で一行ずつ配列にセットして表示の際に適宜呼び出しています。
(一日分が一行に書いてあります。)
例)201505.txt
(1行目)○お部屋割引あり!
(2行目)×
(3行目)○憲法記念日
(4行目)△みどりの日
…
…
編集(書き込み)の際のエラーチェックについて質問です。
下記のチェックを施しています。
コメント欄について、ローカルで動かした時はひらがな20文字まで書くことができるのですが、サーバーにアップするとひらがな6文字まではOKなのですが、7文字入れるとエラーになってしまいます。
・・・$fpは、fgets関数で取り出した一行です。
$status = mb_substr($fp , 0 , 1);
$comment = mb_substr($fp , 1);
// =======================================
// エラーチェック/コメント($_POST["comment"])
// =======================================
if (mb_strlen($comment) > 20) {
$result = $result . "エラー・c-1<br>";
}
mb_regex_encoding("UTF-8");
if (preg_match('/[^0-90-9a-zA-Zぁ-んァ-ヶー一-龠!?a-zA-Z\n\r!?]/u' , $comment)) {
$result = $result . "エラー・c-2<br>";
}
if($result != ""){
echo $result;
}
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>20文字まで書くことができるのですが
>7文字入れるとエラー
これは3バイト文字が7文字いれると21バイトになるからでは?
ソースの初めの方に
mb_internal_encoding("utf8");
など明示するか
>mb_strlen($comment)
でチェックするときに、エンコードを指定するとか必要かも
mb_strlen($comment,"utf8")
早速のご回答をいただいたのに、お礼が遅れて申し訳ありません。
日本語は3バイト文字なのですね・mb_を入れる意味をキチンと理解していませんでした。
エンコードが食い違っているとのご指摘を受け、サーバーのPHPの設定を見たところ、mbstring.internal_encoding というのがありこれをUTF-8 にしたらうまくいきました。
元からうまくいっていたローカルのphp.iniを調べたら、ちゃんと
下記のように書き換えていました。
;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = UTF-8
教科書に書いてあったので、そのままいうとおりにやったのですが、自分で書き換えたのに・・・頭のなかでつながっていませんでした。
ご指摘ありがとうございました。
No.1
- 回答日時:
お礼が遅れて申し訳ありません。
ご紹介いただいたリンクのとおりの現象でした!
”PHPの内部エンコーディング設定”
との食い違いと記載されていたので、そういえばと思い、サーバーのPHPの設定を見たところ、mbstring.internal_encoding というのがありこれをUTF-8 にしたらうまくいきました。
ローカルの方のPHP.iniは、教科書に書いてあったので、そのままいうとおりにやったので、既にUTF-8になっていました。
こちらは自分でやったのに・・・気付きませんでした。
ご指摘ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を変えるには?
-
PHP8を使うと、大量のWarningが...
-
PHPで、エラーがない場合のみ画...
-
ワードプレスサイト PHP8.0.25...
-
phpでPEAR::DBを使っているので...
-
PHPで特定のURLにジャンプす...
-
awsにApacheとPHPを入れて、何...
-
パースエラーとは?
-
PHP 文字列を代入した配列を変...
-
php5.6でsimplexml_load_string...
-
「@$変数」の「@の意味は?」
-
windows環境でphpのfopenが使用...
-
php pear mdb2に質問です。
-
最小公倍数をPHPで求めるには
-
これは例外処理でしょうか?
-
onedrive にexcelファイルをア...
-
バッチを用いたフォルダの自動移動
-
phpとaspの違いについて
-
form actionで二つ送信先を指定...
-
phpで画像がどうしても文字化け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP8を使うと、大量のWarningが...
-
フォントの色を変えるには?
-
ワードプレスサイト PHP8.0.25...
-
トランザクションが原因?DBに...
-
PHPでfatal errorが出ても無視...
-
PHPでネットワークドライブのop...
-
「@$変数」の「@の意味は?」
-
パースエラーとは?
-
PHPで特定のURLにジャンプす...
-
正規表現での最後尾のバックス...
-
phpでクラスのメソッドで同名の...
-
error_reporting(0);にも関わら...
-
PHPで、エラーがない場合のみ画...
-
php7のhtmlentitiesはEUC-JPを...
-
phpのrenameでエラーが出ます
-
phpでget_headers()が使えない?
-
メールアドレスにメールが届い...
-
phpのエラー(T_LNUMBER)について
-
urlの直接入力を防ぐには
-
これは例外処理でしょうか?
おすすめ情報