PHP5についての質問です。

多分、正規表現だと思うのですが・・・。

"ホゲaaa001"の文字列を
"ホゲ" "aaa" "001"
の3つに分け、それぞれ3つの変数に格納したいのですがどのようにすればいいでしょうか?
また、"ホゲaaa" "001"の2つに分けるとしたらどのようになるでしょうか?

"ホゲ" "aaa" "001" はそれぞれレングスは決まっていません。

よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:2007/12/03 22:39:32
  • 終了:2007/12/04 00:06:26

ベストアンサー

id:tezcello No.2

tezcello回答回数459ベストアンサー獲得回数692007/12/03 23:27:52

ポイント58pt

分け方は、英数字以外、英字、数字 だと仮定します。

$str = 'ホゲaaa001';
preg_match('/((.*?)([a-zA-Z]+?))([0-9]+)/', $str, $res);

とすると結果は

Array
(
    [0] => ホゲaaa001
    [1] => ホゲaaa
    [2] => ホゲ
    [3] => aaa
    [4] => 001
)

となります。

3つに分ける場合は、結果配列の 2, 3, 4 に格納されます。

例の様に2つに分ける場合は、結果配列の 1, 4 に格納されています。

最終的に格納したい変数にそれぞれを代入すればよいでしょう。

id:seadwell

ナルホド・・・。

解決しました。

わざわざご回答ありがとうございます。

2007/12/04 00:05:01

その他の回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/12/03 23:26:38

ポイント58pt

アルファベット以外 / アルファベット / 数字

という元データだとすると、下記のようでどうでしょうか。

<?php
$a = "ほげほげabc001";
ereg( '(^[^a-z]+)([a-z]+)([0-9]+)', $a, $ar );
print  "$ar[1]/$ar[2]/$ar[3]";
?>

結果は

ほげほげ/abc/001

のようになります。

id:seadwell

ありがとうございます!

正規表現って難しいです・・・。

発想が出ないんですよね。

解決です。

2007/12/04 00:03:38
id:tezcello No.2

tezcello回答回数459ベストアンサー獲得回数692007/12/03 23:27:52ここでベストアンサー

ポイント58pt

分け方は、英数字以外、英字、数字 だと仮定します。

$str = 'ホゲaaa001';
preg_match('/((.*?)([a-zA-Z]+?))([0-9]+)/', $str, $res);

とすると結果は

Array
(
    [0] => ホゲaaa001
    [1] => ホゲaaa
    [2] => ホゲ
    [3] => aaa
    [4] => 001
)

となります。

3つに分ける場合は、結果配列の 2, 3, 4 に格納されます。

例の様に2つに分ける場合は、結果配列の 1, 4 に格納されています。

最終的に格納したい変数にそれぞれを代入すればよいでしょう。

id:seadwell

ナルホド・・・。

解決しました。

わざわざご回答ありがとうございます。

2007/12/04 00:05:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません