Heim > Artikel > Backend-Entwicklung > PHP gleicht die Remote-Bildadresse im Artikel ab und lädt das Bild lokal herunter
Heute mache ich ein einfaches Sammlungsprogramm, das das Herunterladen des Inhalts der Website der anderen Partei und das anschließende Speichern der Bilder im Inhalt auf dem lokalen Server erfordert. Jetzt werde ich Ihnen meine spezifische Betriebsmethode vorstellen Wird hauptsächlich zum Herunterladen von Bildern verwendet. Die spezifische Methode ist wie folgt.
Hier verwenden wir reguläre PHP-Ausdrücke, um
$content = '这里是文章内容,这里插入一张图片测试 <img src="http://www.php.cn/imgupload/201509/0904011721db04fb16_75_0.jpg">'; $content = stripslashes ( $content ); $img_array = array (); // 匹配所有远程图片 preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png))/isU", $content, $img_array ); // 匹配出来的不重复图片 $img_array = array_unique ( $img_array [2] ); print_r($img_array);
Das Obige entspricht dem Remote-Image und wir müssen es lokal beibehalten. Hier sind zwei Punkte zu beachten:
1. Bildspeicherpfad (Bildspeicherverzeichnis)
2. Tatsächliche Zugriffsbildadresse
Das Folgende ist ein vollständiges Beispiel: ( Sie können die entsprechenden Orte auf dem lokalen Server zum Testen ändern)
php保存远程图片到本地,php正则匹配文章中的图片地址 $value ) { $value = trim ( $value ); // 读取远程图片 $get_file = @file_get_contents ( $value ); // 保存到本地图片名称 $imgname = date ( "YmdHis" ) . '_' . rand ( 10000, 99999 ) . "." . substr ( $value, - 3, 3 ); // 保存到本地的实际文件地址(包含路径和名称) $fileName = $imgPath . '/' . $imgname; // 实际访问的地址 $fileurl = $imgUrl . "/" . $imgname; // 文件写入 if ($get_file) { $fp = @fopen ( $fileName, "w" ); @fwrite ( $fp, $get_file ); @fclose ( $fp ); } // 替换原来的图片地址 $content = ereg_replace ( $value, $fileurl, $content ); } echo $content; ?>