
PHP5使用者です。
ereg() でよくわからないエラーに直面して悩んでおります。
例えば、サンプル文字列が半角数字a~z又は -(ハイフン)のみで構成されているか調べたい場合、以下の方法を試しました。
1)if( ereg("^[\-a-z]+$", $str )){
2)if( ereg("^[a-z-]+$", $str )){
3)if( mb_ereg("^[\-a-z]+$", $str )){
4)if( preg_match("/^[\-a-z]+$/", $str )){
但し $str はシングルバイト文字です
結果、1)のみエラーになります。-をエスケープしているのになぜでしょうか?
文字コードはShift_JIS、EUC-JP、UTF-8とも試しましたが同じでした。そもそも常にマルチバイト関数を使うべきとか…?
解説していただける方、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
preg_matchはUTF-8の場合のみマルチバイトに対応しています。
パターン識別子のuオプションの指定が必要です。
その他の文字コードについてはmb_eregを使うのが妥当でしょう。
参考URL:http://jp2.php.net/manual/ja/reference.pcre.patt …
ありがとうございます。
そうですか。マルチバイトが出てこないならmb_は蛇足と思っていましたがそんなことないのですね。
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PPT ファイルの文字カウント=...
-
エクセルのCOUNTIFが正しくカウ...
-
エクセルでの漢字、カタカナ、...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
文字の入力で横バー上段、中断...
-
IT企業の技術屋にとって全角英...
-
【Excel VBA】A列の全角・半角...
-
全角括弧と全角読点の間隔を狭...
-
全角英数文字が嫌われる理由を...
-
文字列中の両丸括弧を取り除くV...
-
Postgresの特定のカラムからス...
-
XMLのタグ名の禁則文字
-
携帯電話の相手の電話番号にメ...
-
半角スペースを全角スペースに
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
文字列型変数に1024を超えた文...
-
ファイル内の1行(レコード)から...
-
COBOLの改行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
エクセルのCOUNTIFが正しくカウ...
-
全角括弧と全角読点の間隔を狭...
-
特定の文字を簡単な操作で半角...
-
エクセルでの漢字、カタカナ、...
-
VBAで英数字入力チェックしたい。
-
XMLのタグ名の禁則文字
-
Phonetic関数を利用して文章中...
-
全角英数文字が嫌われる理由を...
-
半角記号、全角記号を含む正規...
-
半角スペース の文字化け...
-
Replace関数は文字数の制限ある...
-
パソコンで全角、半角文字の切...
-
記号は半角と全角どちらがよい...
-
2つ以上の連続する空白文字を除去
-
文字列中の両丸括弧を取り除くV...
-
バッチファイル 全角検索
-
半角英数文字を全角英数文字に...
おすすめ情報