• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定文字列の取り出し方 複雑な正規表現)

特定文字列の取り出し方 複雑な正規表現

このQ&Aのポイント
  • 特定文字列の取り出し方が分かりません。正規表現を使用して特定の文字列を抽出する方法を教えてください。
  • 例えば、与えられた文字列から正規表現を使って「http://xyzxyz.com/20111101_123.jpg」と「http://xyzxyz.com/20111102_456.jpg」という特定の文字列を抽出することは可能ですか?
  • お手数ですが、正規表現のパターンと結果を教えていただけますと幸いです。

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

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

<img> 要素の src 属性をマッチさせるとすればこんな感じでしょうか。 $matches = array(); $pattern = '/<img\s[^>]*src="([^"]*)"[^>]*>/i'; preg_match_all( $pattern, $contents, $matches ); $matches = $matches[1]; 厳密性を追求するのであれば、 HTML DOM Parser や xml parser を使って、 要素を順に検証した方が良いでしょう。

参考URL:
http://simplehtmldom.sourceforge.net/
miracle2006
質問者

お礼

ご回答ありがとうございます。 ご察しのとおり、RSSから抽出をしようとしています。 別のHPからタイトルなどの抽出法までは、参考にしてもらいました。 その中にパーサのことは書かれていました。 教えていただいた、正規表現で実行すると 気持ちいいくらいに、抽出され、 感動さえ覚えました。 正規表現は、あらゆる特定文字を抽出してしまうんですね。 私は、いくら勉強しても 正規表現の作れません。 本当に助かりました。 ありがとうございます。 また、質問するかもしれませんので、 そのときは、よろしくお願いします。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

例示された内容では、どういう正規表現が適切なのか判断しかねますが、 $pattern = '/http:\/\/xyzxyz\.com\/[0-9]+_[0-9]+\.jpg/'; とすれば preg_match_all($pattern, $contents, $matches); で $matches に(例示されたケースでは)画像ファイルのURLが取得出来ると思います。

miracle2006
質問者

お礼

ご回答ありがとうございます。 説明が足りなかったようで、申し訳ありません。 どんな場合でも、「xyzxyz」とは限りません。 その文字列から、画像のURLを抽出したかったのです。

関連するQ&A

専門家に質問してみよう