PHP resim indirme
9
●292
- 18-12-2022, 23:30:18PHP ile bir sistem yapıyorum, XML'den gelen yazıyı sistem kayıt ediyor ancak bir sıkıntı var, yazı içerisindeki resim harici alanlardan geliyor yazı içerisindeki resmi otomatik sunucuya indirmek istiyorum yani yazıyı parçalayıp yazı ile resimleri ayıklamak istiyorum. Bu işlemi nasıl yaparım? yazıyı $xml->icerik->aciklama burdan alıyorum. Bilgisi olanlar yardım ederse sevinirim.
- 18-12-2022, 23:40:49
preg_match_all('@src="(.*?)"@si', $xml->icerik->aciklama , $resimler); foreach ($resimler as $resim_url){ echo $resim." Resim url burada gerisi dosyası sunucuya çekme"; $xml->icerik->aciklama= str_replace($resim,$sunucuyacekilen,$xml->icerik->aciklama); }Kaba taslak bu şekilde çözebilirsiniz. - 19-12-2022, 00:09:50Kendi resim indirme scriptimde 3 farklı yöntem kullanmışım, hangisiyle iniyorsa onu deniyor
fopen fwrite fclose
file_put_contents , file_get_contents
copy
Tabi detaylı işlemler var scriptin içinde ama sırf o bölümü atıyorum.
Edit: function ile beraber attım bu çağrılırsa php dosyasının olduğu yere resmi çeker mesela.
$media_dosya_yukle = "media.gif"; $gelen_getdata_url = "https://cdn.r10.net/image.php?u=128162"; function getRequest($url, $refer = "", $timeout = 30) { $ssl = stripos($url,'https://') === 0 ? true : false; $curlObj = curl_init(); $options = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_AUTOREFERER => 1, CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0', CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_TIMEOUT => $timeout, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0, CURLOPT_HTTPHEADER => ['Expect:'], CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4, ]; if ($refer) { $options[CURLOPT_REFERER] = $refer; } if ($ssl) { //support https $options[CURLOPT_SSL_VERIFYHOST] = false; $options[CURLOPT_SSL_VERIFYPEER] = false; } curl_setopt_array($curlObj, $options); $returnData = curl_exec($curlObj); if (curl_errno($curlObj)) { //error message $returnData = curl_error($curlObj); } curl_close($curlObj); return $returnData; } if($gelen_getdata_url_kontrol_sonuc = @getRequest($gelen_getdata_url)) { $fp = fopen($media_dosya_yukle, 'w'); fwrite($fp, $gelen_getdata_url_kontrol_sonuc); fclose($fp); $gelen_getdata_yukleme = 1; } else if(@file_put_contents($media_dosya_yukle, file_get_contents($gelen_getdata_url))) { $gelen_getdata_yukleme = 1; } else if(@copy($gelen_getdata_url, $media_dosya_yukle)) { $gelen_getdata_yukleme = 1; } else { echo 1; } - 19-12-2022, 00:19:19
<?php // XML dosyasını yükle $xml = simplexml_load_file('example.xml'); // "icerik" ve "aciklama" elemanlarını oku $description = $xml->icerik->aciklama; // Yazı içindeki tüm resim URL'lerini bul preg_match_all('/https?:\/\/[^\s]+\.(?:jpe?g|png|gif)/', $description, $matches); $image_urls = $matches[0]; // Resimleri sunucunuza indir ve kaydet foreach ($image_urls as $url) { // Resim verisini indir $image_data = file_get_contents($url); // Sunucuya kaydet file_put_contents('/path/to/local/folder/' . basename($url), $image_data); } ?> - 19-12-2022, 17:02:36Hocalarım, şimdi ben işlemi yaptım, ancak şimdi text içerisindeki resimlerin linklerini değiştirmem lazım garip bir şekilde değişmiyor bilgisi olan var mı?QuarkChain adlı üyeden alıntı: mesajı görüntüle
- 19-12-2022, 17:06:59php ile bir paylaşım kısmına verileri çekiyorum daha sonra wordpress tarafına post edip gelen resimleri ayıklayarak ekrana yazdırıyorum ve wordpress içine kayıt ettiriyorum.QuarkChain adlı üyeden alıntı: mesajı görüntüle
$content = $_POST['icerik']; // Post edilen içerik buraya geliyor foreach ($gelenresim as $key) { // Gelen resimler wordpress kütüphanesine kayıt ediyor $resim = media_sideload_image($key, "isim"); // img taglarını kaldırarak saf url haline getiriyor $p1 = str_replace("<img src='", "" , $resim); $p2 = str_replace("' alt='' />", "" , $p1); //Resim URL adreslerini ekrana basıyor echo $p2; }