<table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_65038"> <div class="blockcode"> <div id="code_cWd"><ol> <li> </li> <li> <?php <li>header('Content-Type:text/html;charset=utf-8');</li> <li> <li>/**</li> <li> * 写真を撮るためのクラス</li> <li>*/</li> <li>class download_image {</li> <li> public $_save_path = NULL; //画像の保存方法</li> <li> public $_limit_size = NULL; //画像のサイズを制限する</li> <li> public static $_img_url_old = array() //キャプチャした画像のリンクアドレスを保存する</li> <li> public static $_a_page_url = array(); /クロールされたページを保存します</li> <li> public function __construct( $_save_path, $_limit_size) {</li> <li> $this->_save_path = $_save_path;</li> <li> $this->_limit_size = $_limit_size;</li> <li> }</li> <li> </li> <li> public function get_all_page_image( $site_url ) {</li> <li> if ( $site_url == '' ) {</li> <li> return false;</li> <li> }</li> <li> if ( ! in_array( $site_url, self::$_a_page_url ) ) { //現在のページがクロールされたかどうかを判断します</li> <li> self:: $ _a_page_url[] = $site_url; // ハイパーリンクを静的配列に保存します</li> <li> } else {</li> <li> return; // クロールされている場合は、ジャンプします</li> <li> }</li> <li> $this->download_the_page_image( $site_url );</li> <li> $content = @file_get_contents($site_url);</li> <li> $a_page_url = "|<a>]+href=['\" ]?([^ '\"?]+)['\" >]|U ";<li> $all_url = array();</li> <li> preg_match_all( $a_page_url, $content, $all_url, PREG_SET_ORDER );</li> <li> if ( $all_url != NULL ) {</li> <li> foreach( $all_url as $key => $val ) { </li> <li> /**</li> <li> * 無限ループに入らないようにするための静的ハイパーリンク </li> <li> * 現在のページのリンク表現 (''、'#'、'/') を終了します </li> <li>*/</li> <li> if (trim($val[1]) != '' && ! in_array( $val[1], self::$_a_page_url ) && ! in_array( $val[1], array('#','/',$site_url) ) ) {</li> <li> self::$_a_page_url[] = $val[1]; // 要件を満たすハイパーリンクを静的配列に書き込みます</li> <li> } </li> <li> }</li> <li> } </li> <li> if ( self::$_a_page_url != NULL ) {</li> <li> foreach( self::$_a_page_url as $keys => $vals ) {</li> <li> if ( strpos( $vals, 'http://' ) === false ) { //ハイパーリンクにhttp://が含まれていない場合は直接アクセスできません</li> <li> //画像リンクアドレスが相対アドレスの場合はアドレスを再構築します</li> <li> $a_domain_url = substr( $site_url, 0, strpos( $site_url, '/' ,8 ) + 1 );</li> <li> $a_img_url = $a_domain_url.$vals; </li> <li> }</li> <li> //再帰呼び出し、各ハイパーリンク ページにアクセスします</li> <li> $this->get_all_page_image( $a_img_url );</li> <li> }</li> <li> }</li> <li> }</li> <li> </li> <li> /**</li> <li> * 現在のページの下にあるすべての画像リンクをダウンロードします</li> <li> * @param $site_url </li> <li>*/</li> <li> public function download_the_page_image( $site_url ) {</li> <li> // 現在のリンク アドレス ページのすべてのコンテンツを取得します </li> <li> $img_pattern = NULL;</li> <li> $content = @file_get_contents( $site_url );</li> <li> $img_pattern = "|<img alt="PHP Webページのキャプチャ" >]+src=['\" ]?([^ '\"?]+)['\" >]|U";</li> <li> //グローバルすべて一致 <img alt="PHP Webページのキャプチャ" > </li> <li> $img_out = array();</li> <li> preg_match_all( $img_pattern, $content, $img_out, PREG_SET_ORDER );</li> <li> echo '<h1>' $site_url の画像リンク。 count($img_out ) . 'Picture</h1>';</li> <li> //print_r($img_out[1]);</li> <li> foreach( $img_out as $key => $val ) {</li> <li> //echo htmlspecialchars($val[ 1] ).'<br>';</li> <li> $this->save_one_image( $site_url, $val[1]);</li> <li> }</li> <li> </li> <li> }</li> <li> </li> <li> public function save_one_image( $site_url, $img_url ) {</li> <li> if ( strpos( $img_url, 'http://' ) === false ) {</li> <li> // 画像リンクアドレスが相対アドレスの場合、アドレスを再構築します </li> <li> $domain_url = substr( $site_url, 0, strpos( $site_url, '/ ',8 ) + 1 );</li> <li> $img_url = $domain_url.$img_url; </li> <li> }</li> <li> $pic_name =basename( $img_url ) //画像名を取得します</li> <li> </li> <li> if ( in_array( $img_url, self::$_img_url_old ) ) {</li> <li> echo $img_url .'<span style="color:red;margin-left:50px">この画像はキャプチャされました!</span><br>' ;</li> <li> return;</li> <li> }</li> <li> //画像コンテンツを取得して文字列に書き込みます</li> <li> $img_data = @file_get_contents( $img_url );</li> <li> if ( strlen($img_data) _limit_size ) { //画像サイズが制限範囲内です </li> <li> $img_boo = @file_put_contents( $this->_save_path.md5(microtime()).$pic_name, $img_data );</li> <li> if ( $img_boo ) {</li> <li> echo $img_url .' <span style="color: green;margin-left:50px;">画像は正常に保存されました。</span><br>';</li> <li> self::$_img_url_old[] = $img_url;</li> <li> } else {</li> <li> echo $img_url .'<span style="color:red;margin-left:50px ;">画像の保存に失敗しました! </span><br>';</li> <li> }</li> <li> } else {</li> <li> echo $img_url .'<span style="color:red;margin-left:50px;">画像サイズは外では限界! </span><br>';</li> <li> }</li> <li> }</li> <li>}</li> <li>set_time_limit(0);</li> <li>$download_images = new download_image('surces_Img/',1024*1024*100);</li> <li>$download_images-> get_all_page_image('http://www.baidu.com/');</li> <li>?></li> <li> </li> <li></a> </li> </ol></div> <em onclick="copycode($('code_cWd'));">コードをコピー</em> </div> <br> </td></tr></table> <div class="ptg mbm mtn"> スナップショット、PHP</div> <div id="comment_65038" class="cm"> </div> <div id="post_rate_div_65038"></div> <br><br>