• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:preg_match_allによる文字列切り出しについて)

preg_match_allによる文字列切り出しの方法と注意点

このQ&Aのポイント
  • preg_match_allを使った文字列切り出しの方法についてご質問いただきました。
  • 質問にあるコードを使って、データから日付を抽出し、配列に収める方法を説明します。
  • ただし、注意点として、一部のデータについては正しく切り出せない可能性があるので、修正が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • smileeeen
  • ベストアンサー率70% (21/30)
回答No.1

「1314」という文字列が出力されてしまう原因ですが、 正規表現の中に不必要な「|」が存在しているためです。 「|」は「OR」と同じような意味合いで、 その前後に書かれたどちらかのパターンにマッチするものを探索します。 これが正規表現内で「年」「月」「日」を表わそうとしている それぞれのパターンの間に挟まってしまっているため 「13時-14時」の数字部分が「日」を表わそうとしている \d{1,2} にマッチするためこのような出力となります。 また、[ ]はその中に書かれた文字のいずれかにマッチするもの という意味なので、[ ]内に「|」の記述は不要です。 マッチした結果を「年」「月」「日」で分ける必要がないのであれば 下記のような形でいかがでしょうか。 for($x = 0; $x < count($data); $x++) { preg_match_all("/\d{4}[\-\/\.年]\d{1,2}[\-\/\.月]\d{1,2}日*/u",$data[$x],$data_array); print $data_array[0][0]; print "<br />"; }

nikuq
質問者

お礼

ありがとうございます! お礼が遅くなりました。 頂いた情報を元に、プログラムに当てはめたら期待通りの結果になりました! 本当にたすかりましたー!

すると、全ての回答が全文表示されます。

関連するQ&A