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

PHP5についての質問です。
多分、正規表現だと思うのですが・・・。

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

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

よろしくお願いします。

●質問者: seadwell
●カテゴリ:ウェブ制作
✍キーワード:AAA 変数 文字列 正規表現
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●58ポイント

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

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

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

結果は

ほげほげ/abc/001

のようになります。

◎質問者からの返答

ありがとうございます!

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

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

解決です。


2 ● tezcello
●58ポイント ベストアンサー

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

$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 に格納されています。

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

◎質問者からの返答

ナルホド・・・。

解決しました。

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

関連質問


●質問をもっと探す●



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