私は新しいWebサイトにコンテンツを整理して移行しています。いくつかの既存のページには、非標準フォルダ内のファイルにリンクする埋め込み画像があります。なぜ私のpreg_match_allステートメントがそれより多くキャプチャしていますか?
私は、データベースからレコードを引っ張った後、問題のある項目をキャプチャするために、「preg_match_all」をやっています。私の意図は、ファイル名を整理し、問題のファイルを移動して、データベースエントリを更新して新しい場所を反映させることです。
しかし、何らかの理由で私の正規表現文は(知られている複数の潜在的なヒットの)唯一の一致を検出しているようだ、と時々私はしたい文字列の下流にある他のものの全体の負荷をキャプチャするようです。
これは私が使っている表現のパターンです:
(?i)(<img.*src="uploads/RTEmagicC_(.*)")/
これは私が反対に一致していたデータベースからのコンテンツの一例である:
BLAH BLAH BLAH<img src="uploads/RTEmagicC_Herpes_simpex_virus.jpg.jpg" alt="HSV particles" style="FLOAT: left; WIDTH: 214px; HEIGHT: 198px" title="Electron micrograph of HSV particles©NASA">blah blah blah<img src="uploads/RTEmagicC_Herpes_labialis_01.jpg.jpg" alt="Coldsore" style="FLOAT: right;" title="Cold sore on the lower lip (cluster of fluid-filled blisters = very infectious). These infections may appear on the lips, nose or in surrounding areas.©Metju12" width="238" height="178">blah blah blah
私がつかむしようとしています: "Herpes_simpex_virus.jpg.jpg"
"Herpes_labialis_01.jpg.jpg"
および対応するフルリンクの例: "img src="uploads/RTEmagicC_Herpes_simpex_virus.jpg.jpg"
しかし、それはファイル名を閉じる"
を超えて、下流のもののヒープにもマッチしています。
誰かが私の悲惨さから私を入れてくださいことはできますか? ...
多くのおかげで、私はこの上でいくつかの夜のために試してみたと明らかに私は愚かな何かをやっているが、私は何を参照することはできません。
HTMLを解析するために正規表現を使用しないで、 'DOMDocument'のようなHTMLパーサーを使用してください。 – Barmar
ありがとうございます。しかし、私はそれをどうやって行うのか、正規表現を使わないことの根拠は何も知らないことを認めなければなりません。あなたが説明することができますか、私に参考にしてください?ありがとう – Chris
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Barmar