人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP・正規表現の質問です。

「会員IDは345番です」
このような日本語が変数に入っているとします。ここから「番」という特定の文字の前の英数字3文字を抜き出して変数に格納したいです。

文の最初の「会員番号は」のところは可変しますので、最初から6文字目?8文字目を抜き出すというやり方ではダメなのです。

「あなたのIDはa45番ですばい」

このような日本語の場合もあるのです。

これは恐らく正規表現とやらを使うと思うのですが、具体的にどうすればいいのかわかりません。

どなたか教えて頂けるとありがたいです。みなさんよろしくお願いします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP あなた ダメ 変数 数字
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● nandedarou
●50ポイント ベストアンサー

$str = '会員IDは345番です';

$num = preg_replace ('/.*[^0-9]([0-9][0-9][0-9])番.*/', '$1', $str) ;

print_r($num);

でどうでしょうか?


2 ● nandedarou
●50ポイント

すみません。訂正します。

$str = 'あなたのIDはa45番ですばい';

$num = preg_replace ('/.*[^a-zA-Z0-9]([a-zA-Z0-9]{3})番.*/', '$1', $str) ;

print_r($num);

◎質問者からの返答

おかげさまで出来ました。

nandedarouさんの回答をベースに

(番|ばん)

このようなやり方も覚えました。

いつも具体的で助かります。ありがとうございました。


3 ● yuri-jda
●5ポイント

string.slice(from [, to])

を使うと、string の from?to - 1 文字目(最初の文字を 0 番目とする)の文字列を取得出来るようです。

参考URL:http://www.tohoho-web.com/js/string.htm#slice

substr関数が使えれば一番いいのですが、IE6では未対応の様なので

sliceを使用して?番号までの値を取得し、?番号のみ取り出す

と言う方法はどうでしょうか?

var str = "会員IDは345番です";

str = str.slice(-6); //「345番です」までを取得

str = str..substring(0, 3);//初めから3文字目までを取得

alert(str); //345がアラートに出力されます


上記を少しシンプルにすると、下記のようになります。

var str = "会員IDは345番です";

str = (str.slice(-6)).substring(0, 3);

alert(str);

◎質問者からの返答

これはつまり最初から何番目に出現するか明白な場合でないと使えないですよね?

質問文にも書いてありますが、それは可変なんです。


4 ● yuri-jda
●5ポイント

PHPだったんですね、すみません勘違いしました。。。

消してくださって構いません。

お手数おかけいたしました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ