ホームページ  >  記事  >  バックエンド開発  >  PHP での画像アドレスの定期的な抽出に関する雑談_PHP チュートリアル

PHP での画像アドレスの定期的な抽出に関する雑談_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:35:01735ブラウズ

私は規則的なルールに執着しており、新しいトリックを試し続けています。まず、不完全な出力 RSS を提供してくれた TNA に感謝します。そして、強制学習をしてくれた SH にもう一度感謝します。 TNA がなかったら、私は正規表現を調べることもなかったでしょうし、SH が単に理解できないと言っていなかったら、私は勇気を持っていなかったでしょう。それを見つけて改善することです。同じ目標を達成するために、正規表現は一意ではない可能性があります。実行できないことはありません。ただ、それが予期していなかったというだけです。言い換えれば、規則性とはルールを設定することです。私はこのようなことが大好きです。物事をフィルタリングするためのルールを設定することほど私を興奮させ、素晴らしい気分にさせるものはありません。

PHP 環境で正規表現を使用して画像アドレスを抽出する際のヒントを共有します:

画像URL指定のHTMLコードは以下の通りです

コードをコピーします コードは次のとおりです:

囧4

囧1と囧2は必須ではありません。XHTML認証に合格したい場合は、囧4、囧5、囧6は必須のコンテンツであり、当然必須です。

規則性に関する限り、私が書いた最も短い一致は次のとおりです

コードをコピーします コードは次のとおりです:

(?<=img.+?src=").*?(?=")

ただし、これはphpでは機能せず、次のように表示されます:

警告: preg_match_all() [function.preg-match-all]: コンパイルに失敗しました: *** のオフセット *** で後読みアサーションが固定長ではありません

長い間苦労しましたが、うまくいきませんでした。原因は何ですか?何度も試した結果、最終的に問題はゼロ幅アサーション (?<=img.+?src=) にあることがわかりました。PHP では、ゼロ幅アサーションは "*" や " のような無制限の回数をサポートしていません。 +"。何かエラーが出たので、".+?"を固定長に変更するだけです。ただし、"img"と"src="の間の長さを固定することは基本的に不可能です。通常、imgとsrc=は画像アドレスのみです。非常に単純なスペースで区切られますが、src の前と img

の後に alt、titlte などが存在する場合もあります。

それでは

コードをコピーしてください コードは次のとおりです:

(?<=img.src=").*?(?=")

または
コードをコピー コードは次のとおりです:

(?<=imgssrc=").*?(?=")

可能かもしれませんが、100%大丈夫という保証はありません。

シンプルさについて尋ねるかもしれません

コードをコピーします コードは次のとおりです:

(?<=src=").*?(?=")

まさか?通常はそうですが、ページを検索した友人なら、src で始まる画像アドレスに加えて、JavaScript アドレスも src で始まることを知っているはずです。しかも、そこには謎や予測不可能な要素があまりにも多く隠されているので、この一見短く完璧な書き方は通用しません。

また、賢くて短いだけでは十分ではない、という質問もできます。写真の接尾辞をリストします。

などで大丈夫です。

コードをコピーします コードは次のとおりです:

(?<=src=").*?.(jpg|jpeg|gif|png|bmp|JPG|JPEG|GIF|PNG| BMP)

確かに、この書き方はとても正直ですが、接尾辞のない写真を見たことはありますか? wwe.com にはこの例がたくさんあります

RAW http://us.wwe.com/content/media/images/Headers/15559182
SmackDown http://us.wwe.com/content/media/images/Headers/15854138
NXT http://us. WWE.com/content/media/images/Headers/15929136
スーパースター http://us.wwe.com/content/media/images/Headers/15815850

上記の URL はすべて写真ですが、従来の接尾辞が付いていません。正直になっても意味がありません。

どうすればいいですか?まだこのままかもしれません

コードをコピーします コードは次のとおりです:

上記の式とは異なり、この結果の array[0] の内容は、必要な画像アドレスが array[2] にあります。なぜ? 2 (.*?) を使用したため、各 "()" は自動的にグループ内に存在し、 array[0] は結果の概要を表し、 array[1] には img と src のすべてが含まれ、 array[2]必要な画像アドレスの番です。この照合方法は、従来のサフィックスを持つ画像だけでなく、他の src= ファイルを強制終了することなく、サフィックスのない一部の画像ファイルとも照合できます。個人的にはかなりいい感じです(笑)。もちろん、もっと良い提案があれば、すぐにメッセージを残してください。世界中の人が感謝するでしょう。

どんな種類の写真が欲しいですか?固定フォーマットですか?詳細に分析する必要があります。

私の提案は次のとおりです:

必要な画像アドレスの形式が img space src= の場合は、(?<=img.src=").*?(?=") を使用してください。配列は一意です。

それ以外の場合は、

PHPによる画像アドレスの定期的な抽出について話しましょう

一昨日、PHP の通常のルールを使用して画像アドレスを抽出することについて簡単な話を書きましたが、実際には、アドレスが絶対アドレスまたは完全なアドレスの場合はどうなりますか?アドレスが次のような場合:

albums/Candids/thumb_P1050338.jpg
/content/media/touts/5271608/5271654/15320982

どうすればいいですか?

これらのアドレスの前に http://example1.com/ を追加する必要がある場合や、http://example1.com/example2/.../ を追加する必要がある場合もあるため、次のようなルールを記述する必要があります。ファンタジーの要件をすべて満たしています。私たちは状況に応じて行動し、適切な薬を処方することしかできません。ナイフは前から切る必要がある場合もあれば、後ろから切る必要がある場合もあります。

今日知ってびっくりしました。 http://example.com/ と http://example.com////// が同じだということが分かりました。

http://img3.douban.com/pics/nav/lg_main_a6.png

http://img3.douban.com////pics////nav///lg_main_a6.png

やがて到着します

つまり、冒頭で述べた 2 つの相対アドレスに対して、特定のプレフィックスを強制的に追加して絶対アドレスに戻したい場合は、その前に「/」があるかどうかは関係なく、「/」を追加するだけです。 「/」。「合格」、「/」が 1 つあれば正常に表示されますが、「/」が 1 つ少ないと、合格とは考えられません。最初はこのようなことに気づかなかったので、コードの大きなセクションをコピーし、同じものを 2 つ作成し、1 つは「./.」を追加し、もう 1 つは追加しませんでした。私は火星から来たのですが、時間を無駄にしています。

ウェブページから画像を取得する方法の公開テスト用に 2 つのアドレスをリリースします:

ログインが必要な Web ページを除くすべての Web ページの場合: http://xyark.serw5.com/img.php
Coppermine Photo Gallery システムの場合: http://xyark.serw5.com/g.php (元の画像が表示されます。js ページにもそれが必要な場合、私はあなたを困らせなければなりません)

一般ページはあらゆる画像をキャプチャする試みであり、システムページは特定の状況の詳細な分析が何を意味するかを示すものです。試したことがある人はわかると思いますが、Coppermine Photo Gallery システムを使用する一部の Web サイトでは一般ページが機能しません。その理由は何ですか?責任があるのはそのプレフィックスです。しかし、システム ページを使用すると、この問題をうまく回避できます。

テスト中にバグを見つけた場合は、メッセージを残してお知らせください。控えめな方法でテストしてください。ご協力ありがとうございます。

注: 上記のトピックはルールとテクノロジーについてのみ議論するためのものであり、違法な目的に使用することはできません。不適切な使用によりカップや食器が破損した場合、私は責任を負いません。

転載する場合は、記事とこの記述の元の出典と著者情報をハイパーリンクの形式で明記してください
http://www.blogbus.com/xrspook-logs/85330456.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/746618.html技術記事私は通常のルールに執着しており、新しいトリックを試し続けています。まず第一に、TNA の不完全な出力 RSS のおかげです。そして、SH の強制学習のおかげです。 TNA がなかったら、世界を知ることはおろか、普通の映画も観なかったでしょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。