Parfois, nos rédacteurs image copiée est à distance, vous devez télécharger sur un serveur local.
1, extraire une image distante
/ * * Fonction: php parfaite réalisation de l' image à distance est enregistrée dans les locaux Paramètres *: url fichier, enregistrez le répertoire de fichiers, enregistrer le nom du fichier à télécharger à l' aide * Lorsque vous enregistrez le nom de fichier est vide lorsque le nom d' origine du fichier distant, utilisez * / privé la fonction getImage (URL $, nom = $ '', $ type = 0) { IF (TRIM (URL $) == '') { retour Array ( 'nom_fichier' => '', 'la save_path' => '', 'error' => 1). } $ filePath = 'Télécharger / contenu /' DATE ( 'Ymd'). // IF (TRIM ($ save_dir) == '') { .. = $ save_dir root_path DS « WWW '.. DS $ filePath; //} IF (TRIM ($ filename) ==' ') {// nom du fichier pour enregistrer $ EXT = le strrchr (URL $,'. '); !. SI (EXT = $' GIF '&& $ ext! ='. jpg ') { Return array ( 'file_name' => '', 'save_path' => '', 'erreur' => 3); } filename = $ Time () $ EXT ;. } if (! == 0 strrpos ($ save_dir, '/')) { $ save_dir = '/' ;. } // Création d' un répertoire de stockage si (file_exists ($ save_dir)! ! && mkdir ($ save_dir, 0777, true)) { ; Array retour ( 'nom_fichier' => '', 'la save_path' => '', 'error' => 5). } méthode d'obtention fichier distant // employé if ($ type) { $ CH = curl_init (); $ timeout = 5;. curl_setopt (CH $, CURLOPT_URL à, $ URL); curl_setopt (CH, CURLOPT_RETURNTRANSFER $ ,. 1); curl_setopt (CH, CURLOPT_CONNECTTIMEOUT $, $ timeout); $ img = curl_exec ($ ch) ; if ($ img == false) { réseau de retour ( 'file_name' => '', 'save_path' => '', 'erreur' => 6); } Curl_close ($ ch); } else { ob_start (); readfile ($ url); $ img = ob_get_contents (); ob_end_clean (); } // $ size = strlen ($ img); //文件大小 $ FP2 = @ fopen ($ save_dir nom $, 'a'.); fwrite ($ FP2, $ img); fclose (FP2 $); unset ($ img, $ url); réseau de retour (. 'file_name' => $ nom de fichier, 'save_path' => DS filePath $, 'erreur' => 0); }
En variante, l'éditeur du contenu 2, l'éditeur d'acquisition de contenu, en utilisant le procédé ci-dessus
/ * Enregistrer la télécommande à l'image locale * @param $ éditeur de contenu de contenu @return $ contenu était revenu de remplacement contenu * / protégé fonction getRempotePicToLocation ($ Contenu) { preg_match_all ( ' / <IMG [^ "] = + src" ([^ "] +) \" / ' , $ contenu, $ les matchs), IF ($ les matchs) { $ imglist = $ les résultats [ 1. ], le foreach (imglist $ AS $ ou matchs -) { IF (les strpos ($ ou matchs -, ' HTTP ' )> = 0 ) { / * nom de fichier et l' extension pour obtenir le fichier en cours * / preg_match ( ' /\/([^\/]+\.[az]+)[^\/]*$/ ' , Matche $, Fileinfo $); $ info = $ ce -> getImage (Matche $, Fileinfo $ [ 1 ], 0 ); si ($ info [ ' erreur ' ] == 0 ) { $ contenu = str_replace ($ Matche, $ info [ ' save_path ' ] .ds $ [info. ' nom_fichier ' ], $ contenu); } } } } Retourcontenu $; }