• 18-12-2022, 23:30:18
    #1
    PHP 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:38:17
    #2
    Çıktıyı konu altına atın, bir inceleyelim hocam.
  • 18-12-2022, 23:40:49
    #3
    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:50
    #4
    Kendi 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
    #5
    <?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:36
    #6
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    <?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);
    }
    
    ?>
    Hocaları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ı?
  • 19-12-2022, 17:03:50
    #7
    Kodun son durumu nasıl
  • 19-12-2022, 17:06:59
    #8
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    Kodun son durumu nasıl
    php 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.

    $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;
    }
  • 19-12-2022, 17:08:00
    #9
    Resimleri de array olarak post ediyorum