PHP5の正規表現についての質問です。


$data = "ホゲ モゲ ハゲ"

の文字を"ホゲ"と"モゲ"と"ハゲ"に分けて配列に格納したいのです。

"ホゲ モゲ ハゲ"の全角カタカナの部分は、英数字・ひらがな・全角カタカナ・半角カタカナなどいろんな場合があります。
スペースの部分は、半角スペース・全角スペース・カンマ・カンマ+半角スペースのいずれかです。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/12/10 21:29:22
  • 終了:2007/12/11 02:14:17

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/12/10 22:32:04

ポイント100pt

本当はmb_split を使用すべきかもしれませんが、split でも(こちらの環境では)一応できました。

\t の前が半角スペース、後ろが全角スペースになっています。

<?php
    $ar = split( "[ \t ,]+", "ホゲ モゲ ハゲ,ホゲ	モゲ, ハゲ");
    print_r( $ar );
?>

ご希望の仕様とは異なっていますが、タブも含めて複数の空白文字があった場合の実装例です。

実行結果は下記です。

Array ( [0] => ホゲ [1] => モゲ [2] => ハゲ [3] => ホゲ [4] => モゲ [5] => ハゲ )

PHP:split

id:seadwell

こちらは、希望通り動作しました。

ありがとうございました。

私の元データの頭にスペースかタグが入っているのか?[0] =>が空になってしまいます。

これを取り除くにはどのように書けばよろしいでしょうか?

上記テストデータでも頭にスペースを入れると、[0] =>が空になってしまいます。

どなたかよろしくお願いします。

2007/12/11 01:18:28

その他の回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/12/10 21:36:05

ポイント35pt

mbstring の設定はできていると仮定して、

$split = mb_split(/( | |,|, )/,$data);

ってとこですか。

PHP: mb_split - Manual

id:seadwell

スミマセンこちらはどうしてもエラーが出るのです。

正規表現、()の中の書き方がさっぱりなのです。

mb_split関数教えて頂いてありがとうございました。

2007/12/11 01:11:17
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/12/10 22:32:04ここでベストアンサー

ポイント100pt

本当はmb_split を使用すべきかもしれませんが、split でも(こちらの環境では)一応できました。

\t の前が半角スペース、後ろが全角スペースになっています。

<?php
    $ar = split( "[ \t ,]+", "ホゲ モゲ ハゲ,ホゲ	モゲ, ハゲ");
    print_r( $ar );
?>

ご希望の仕様とは異なっていますが、タブも含めて複数の空白文字があった場合の実装例です。

実行結果は下記です。

Array ( [0] => ホゲ [1] => モゲ [2] => ハゲ [3] => ホゲ [4] => モゲ [5] => ハゲ )

PHP:split

id:seadwell

こちらは、希望通り動作しました。

ありがとうございました。

私の元データの頭にスペースかタグが入っているのか?[0] =>が空になってしまいます。

これを取り除くにはどのように書けばよろしいでしょうか?

上記テストデータでも頭にスペースを入れると、[0] =>が空になってしまいます。

どなたかよろしくお願いします。

2007/12/11 01:18:28
  • id:Mook
    $data = "ホゲ モゲ ハゲ,ホゲ モゲ, ハゲ";
    split( "[ \t ,]+", trim( $data ) );

    もしくは、
    split( "[ \t ,]+", trim( $data," \t ," ) );

    でどうでしょうか。
    http://search.net-newbie.com/php/function.trim.html
  • id:seadwell
    完璧です!!
    解決しました。
    trimなる関数教えて頂いてありがとうございます。

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

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

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

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