PHP preg_matchで中括弧が引っかからない。 PHP X Facebook はてブ Pocket LINE コピー 2007.02.132019.04.25 PHPの正規表現関数の中で一番早いpreg_matchが思い通り動かない。 以下のコードで中括弧が無かったら、trueを出したいのだが、無くてもtrueが出ちゃう。 preg_match('/[^{}]+/','紙');
Comments
これだと中括弧以外が1文字でもあったらtrue
中括弧があったらfalseにしたいなら
preg_match(‘/^[^{}]+$/’,’紙’);
かな
こんな過去の記事にコメントありがとうございます。
今見てみると、本文のコードよくわからないですね。
当時のコードと実行環境は残っていないので推測ですが、「紙」のUTF8のバイト列と「{」のバイト列を比較した際に、「{」のバイト列が「紙」のバイト列に含まれている。
よって、PHPの正規表現で「紙」が「{」にマッチしてしまう事を書きたかった記事だと思います。
手元の環境で試してみましたが、再現しませんでした。