よろしくお願いいたします。
カレンダーを利用した宿の空室状況を作っています。
「各日付」の下に空室状況を表す○、×等の「マーク」その下に祭日やイベントなどの「コ
メント」を表示し、これらを編集します。
上記の「マーク」や「コメント」の内容は月毎に用意したテキストファイルから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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「@$変数」の「@の意味は?」
-
フォントの色を変えるには?
-
これは例外処理でしょうか?
-
PHP8を使うと、大量のWarningが...
-
IIS/PHPのサイトでたまにCGIエ...
-
PHPでfatal errorが出ても無視...
-
PHPで、エラーがない場合のみ画...
-
訂正版 次のPHPにアクセス
-
php7のhtmlentitiesはEUC-JPを...
-
日本語をGETで渡す場合UR...
-
さくらレンタルサーバ上のSmart...
-
xmlの宣言文をPHPで出力するには
-
エラーが起きた位置の特定
-
PHP関数 mb_strlenでエラーになる
-
メールアドレスにメールが届い...
-
AptanaStudioでASP形式のPHPシ...
-
functionについて
-
pg_queryのエラー
-
header(Location: next.php) だ...
-
PHPのif文でその処理を途中で抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
PHPでネットワークドライブのop...
-
PHP8を使うと、大量のWarningが...
-
パースエラーとは?
-
ワードプレスサイト PHP8.0.25...
-
「@$変数」の「@の意味は?」
-
PHPで、エラーがない場合のみ画...
-
PHPにて外部サイト内容が取得不...
-
PHPでfatal errorが出ても無視...
-
iframeからのアクセスか、ブラ...
-
phpのrenameでエラーが出ます
-
正規表現での最後尾のバックス...
-
fsockopenの例外について
-
これは例外処理でしょうか?
-
Localeクラスについて
-
awsにApacheとPHPを入れて、何...
-
PHPで特定のURLにジャンプす...
-
bindValueエラー
-
PEARのライブラリを使うと文法...
おすすめ情報