• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP5で正規表現を使った文字の取り出しが上手くいきません。)

PHP5で正規表現を使った文字の取り出しが上手くいかない

このQ&Aのポイント
  • PHP5で正規表現を使った文字の取り出しが上手くいかない問題について解説します。
  • 学籍番号から入学年度・学部・名簿番号を取り出したいが、正規表現がうまく動かない状況です。
  • 詳細なコードと問題点について説明しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

POSIX正規表現では\dは(数値のメタキャラとして)通用しないはずです([0-9]と表現します)。 また、2,2,3桁の形でマッチさせたいのであれば表現が不足している部分があります。 以上に加えて、PHP5.3.0 以降、regex拡張モジュールは非推奨となっているのでpreg_matchを用いた方が将来性があると思います。 ですので下記のようにするのがいいのではないでしょうか。 $text = "私の学籍番号は0708068番です。"; if(preg_match("/(\d{2})(\d{2})(\d{3})/", $text, $regs)){ echo "true.\n"; var_dump($regs); }else{ echo "false.\n"; } 結果は以下のようになります。 true. array(4) { [0]=> string(7) "0708068" [1]=> string(2) "07" [2]=> string(2) "08" [3]=> string(3) "068" }

Nishihashi
質問者

お礼

ここ数日、周りに質問できる人もおらず、なぜ動かないのか頭を抱えていましたが、 >regex拡張モジュールは非推奨 >POSIX正規表現では\dは通用しない など、聞いた事によって色々と謎が解けました。どうも有り難う御座います。

関連するQ&A