アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPの正規表現で、下記文字コードを対象とするパターンはどのように書けば良いのでしょうか。
0xF0 0x9F 0x8C 0x80 - 0xF0 0x9F 0x97 0xBF


例えば
0xF0 0x9F 0x98 0x80 - 0xF0 0x9F 0x99 0x8f
であれば、preg_match('/'\xf0\x9f\x98[\x80-\xff]|\xf0\x9f\x99[\x00-\x8f]/')
という記述になると思いますが、2バイト目が8c-97のようにまたがる場合のスマートな書き方を知りたいです。

A 回答 (3件)

単純に下記のような記述でどうでしょうか?



preg_match('/\xF0\x9F[\x8C-\x97][\x80-\xBF]/', $char);

条件をまとめると以下のような感じですね。

1バイト目: 0xF0
2バイト目: 0x9F
3バイト目: 0x8C ~ 0x97
4バイト目: 0x80 ~ 0xBF
    • good
    • 0
この回答へのお礼

まさにこれでした!ありがとうございます。

今気づいたのですが、鬼車のドキュメントにも書いてありました。。

http://www.geocities.jp/kosako3/oniguruma/doc/RE …
> octal or hexadecimal number sequence can be treated as
> a multibyte code char in character class if multibyte encoding is specified.
> (ex. [\xa1\xa2], [\xa1\xa7-\xa4\xa1])

お礼日時:2012/01/26 14:56

マルチバイト文字を扱うのであれば(mb_regex_encodingを指定した上で)mb_ereg系の関数を使うべきでは?

    • good
    • 0

バイト単位でやる意味がそもそもないんじゃない?


http://ideone.com/bjGV3
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!