今度は、他の人の Web サイトにある写真付きのコンテンツを自分の Web サイトにコピーする必要があるため、他の人の Web サイトから写真をダウンロードしてローカルに保存し、コンテンツ内の写真アドレスをローカルのものに置き換える必要があります。ここで使用する必要があるのは、php には preg_match_all、file_get_contents、str_replace の 3 つの関数があります。
記事をコピーしたところ、画像パスが他の人の Web サイトからのものであることがわかりました。ワンクリックでこれらの画像をローカルエリアにダウンロードし、ローカルパスに変更するにはどうすればよいですか?
コードは次のとおりです | コードをコピー |
/** *差し替え記事内の画像パスを取得します * @param string $xstr content Webページのコンテンツを収集します * @param string $keyword 作成した写真のファイル名をupimg と書きます。 * @param string $oriweb URL、通常は null を書き込みます * @戻り文字列 * */ 関数 replaceimg($xstr,$keyword, $oriweb){ $basedir = ディレクトリ名(__FILE__); //パスを保存 $d = date('Ym', time()); $dirslsitss = $basedir.'/../uploads/'.$keyword.'/'.$d;//カテゴリが存在するかどうか If(!is_dir($dirslsitss)) { @mkdir($dirslsitss, 0777); } // 画像のsrcと一致します Preg_match_all('# foreach($match[1] as $imgurl){ $imgurl = $imgurl; If(is_int(strpos($imgurl, 'http'))){ $arcurl = $imgurl; } else { $arcurl = $oriweb.$imgurl; } $img=file_get_contents($arcurl); if(!empty($img)) { //画像をサーバーに保存します $fileimgname = time()."-".rand(1000,9999).".jpg"; $filecachs=$dirslsitss."/".$fileimgname; $fanhuistr = file_put_contents( $filecachs, $img ); $saveimgfile = "/uploads/$keyword"."/".$d."/".$fileimgname; $xstr=str_replace($imgurl,$saveimgfile,$xstr); } } $xstr; を返します } |