![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
PHP5で正規表現を使った文字の取り出しが上手くいきません。
こんばんは、教えて!goo初投稿させて頂きます。
PHP5で学内の事務情報を管理するスクリプトを組んでいます。
学籍番号から入学年度・学部・名簿番号を取り出したいのですが、狙った通りに上手く動いてくれません。
POSTで渡された テキスト内に含まれた7桁の学籍番号「0708068」(2:2:3桁区切りで入学年度・学部・名簿番号)をマッチングさせる為に、正規表現「\d{2}\d{2}\d{3}」で 配列 $regs に返し、
$regs[0] => 07
$regs[1] => 08
$regs[2] => 068
のような感じで戻ってくる事を想定しています。
手元の書籍、ネットのリファレンスで確認しても問題点が解りません。
何が間違っているのか、ご指摘お願いします。
//上手く動いてくれないコード
$text = "私の学籍番号は0708068番です。";
if(ereg("\d{2}\d{2}\d{3}",$text,$regs)){
echo "true.\n";
echo ($regs[0]."\n".$regs[1]."\n".$regs[2]."\n");
}else{
echo "false.\n";
//いつもfalseが帰ってきてしまう。
}
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"
}
ここ数日、周りに質問できる人もおらず、なぜ動かないのか頭を抱えていましたが、
>regex拡張モジュールは非推奨
>POSIX正規表現では\dは通用しない
など、聞いた事によって色々と謎が解けました。どうも有り難う御座います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 第二回模試の3科目の各得点と合 1 2023/04/25 18:02
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
変数の中の<br>を消したい
-
phpでcookieがうまく保存されない
-
eとは?
-
syntax error, unexpected 'ech...
-
switch()文で値の大小比較
-
csvの特定のキーワードを指定し...
-
DBのハッシュ化したパスワード...
-
オブジェクトの中身の判定(PHP)
-
明日の18:00から!Amazon cyber...
-
ゼロとNULLを区別して number_f...
-
動的なPHPを静的なhtmlページに...
-
XMLのタグの有無をPHPで判定し...
-
phpにおいて$xを計算式の文字列...
-
Windowsのsetコマンドでの小数...
-
vbsのif文で複数条件の判定
-
php で 20連続ガチャ作成中な...
-
WIN FIXER2005
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
PHPで訪問回数を表示するカウン...
-
ゼロとNULLを区別して number_f...
-
bashの関数の引数にスペースが...
-
ナベアツプログラム(3の倍数...
-
変数の受け渡しによる画像の表示
-
PHP一覧表示した項目にリンクを...
-
Windowsのsetコマンドでの小数...
-
Parse error というエラーの対...
-
pdftkを使った処理をバッチファ...
-
DBのハッシュ化したパスワード...
おすすめ情報