[PHP] Bu kodu while ile nasıl kullanırım

iwolfsshd

Üye
15 Eyl 2018
80
0

Merhaba THT Ailesi,
Ben PHP ile kendim için deneme bir şekilde bot yapıyorum.Botumun çalışma mantığı şu şekilde;
urunler.txt diye bir dosyam var bu dosyada Robotistan.com dan ürünlerin linkleri ( , ) ile ayrılmış durumda.Benim Kodum bu linkleri ayırıp Array olarak bana veriyor (0 1 2 3 gibi).Bende bu linke göre verilerimi çekiyorum.
Ben bunu kod parçacığını tekrarlayıp Arrayı değiştirerek yapıyorum ve çok fazla kod oluyor yüklenmesi uzun sürüyor.
Bunu nasıl while ile döngü şeklinde yapabilirim? Teşekkürler.



urunler.txt İçeriği:
Kod:
https://www.robotistan.com/6v-250-rpm-motor-ve-tekerlek-seti,https://www.robotistan.com/l298n-voltaj-regulatorlu-cift-motor-surucu-karti,https://www.robotistan.com/arduino-mega-2560-r3-klon?_sgm_campaign=scn_59071286f58cc000&_sgm_source=456&_sgm_action=click,https://www.robotistan.com/breadboard-2?_sgm_campaign=scn_6186b7884aa16000&_sgm_source=1617&_sgm_action=click,https://www.robotistan.com/hc-sr04-ultrasonik-mesafe-sensoru?_sgm_campaign=scn_6186b7884aa16000&_sgm_source=1751&_sgm_action=click
KODUM:
Kod:
<?php 


$dosya = fopen('urunler.txt', 'r');
$icerik = fread($dosya, filesize('urunler.txt'));

$file=$icerik;
$dizi = explode (",",$file);
 
 

///// BASLANGIC ///////////////


$link=$dizi[0];


$veri=file_get_contents($link);

	
preg_match_all('@<h1 class="fl col-12" id="productName" itemprop="name">(.*?)</h1>@si' ,$veri , $ubaslik);


echo $ubaslik[0][0];



preg_match_all('@<span class="detailValue quantity col">(.*?)</span>
</div>@si' ,$veri , $umiktar);

echo "Miktar = ";
echo  $umiktar[0][0];




preg_match_all('@<span class="product-price-not-discounted">(.*?)</span>@si' ,$veri , $ufiyat);

$fi="<br>Fiyat = ";

echo $fi ,$ufiyat[0][0];

echo "<br>";
echo "<hr>";
?>
Başlangıç kısmından en aşşağıya kadar kopyalayıp diziyi değiştiriyorum öyle kullanıyorum şuan çok zor oluyor.

 
Son düzenleme:

iwolfsshd

Üye
15 Eyl 2018
80
0
PHP: foreach - Manual

foreach ile kolayca yapabilirsin, veya while istiyorsan i < length($arr) (uzunluk length mi PHP'de bilmiyorum) şeklinde bir koşul ile yapılabilir ve i, dizi için key olarak kullanılabilir.


Hocam çok teşekkür ederim, şuanda foreach ile yapabiliyorum ama, arrayları kendi elimle ekliyorum.Baktım biraz ama bulamadım.Ben Array yerine $dizi yazsam o otomatik 0 1 2 3 4 5 6 gibi yazsa nasıl olacak bu hocam zamanınız varsa yardım edebilirseniz çok minnettar kalırım.Çok teşekkür ederim.

Şuanki kodlarım:
Kod:
<?php 

$dosya = fopen('urunler.txt', 'r');
$icerik = fread($dosya, filesize('urunler.txt'));

$file=$icerik;
$dizi = explode (",",$file);


///// BASLANGIC ///////////////
foreach (array(0, 1, 2, 3, 4, 5) as &$değer) {
    



$link=$dizi[$değer];



$veri=file_get_contents($link);

	
preg_match_all('@<h1 class="fl col-12" id="productName" itemprop="name">(.*?)</h1>@si' ,$veri , $ubaslik);


echo $ubaslik[0][0];



preg_match_all('@<span class="detailValue quantity col">(.*?)</span>
</div>@si' ,$veri , $umiktar);

echo "Miktar = ";
echo  $umiktar[0][0];




preg_match_all('@<span class="product-price-not-discounted">(.*?)</span>@si' ,$veri , $ufiyat);

$fi="<br>Fiyat = ";

echo $fi ,$ufiyat[0][0];

echo "<br>";
echo "<hr>";

}

 ?>

print_r ile $dizi yi yazdırınca çıkan çıktı:
Kod:
Array ( [0] => https://www.robotistan.com/6v-250-rpm-motor-ve-tekerlek-seti [1] => https://www.robotistan.com/l298n-voltaj-regulatorlu-cift-motor-surucu-karti [2] => https://www.robotistan.com/arduino-mega-2560-r3-klon?_sgm_campaign=scn_59071286f58cc000&_sgm_source=456&_sgm_action=click [3] => https://www.robotistan.com/breadboard-2?_sgm_campaign=scn_6186b7884aa16000&_sgm_source=1617&_sgm_action=click [4] => https://www.robotistan.com/hc-sr04-ultrasonik-mesafe-sensoru?_sgm_campaign=scn_6186b7884aa16000&_sgm_source=1751&_sgm_action=click )
 

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11

Hocam çok teşekkür ederim, şuanda foreach ile yapabiliyorum ama, arrayları kendi elimle ekliyorum.Baktım biraz ama bulamadım.Ben Array yerine $dizi yazsam o otomatik 0 1 2 3 4 5 6 gibi yazsa nasıl olacak bu hocam zamanınız varsa yardım edebilirseniz çok minnettar kalırım.Çok teşekkür ederim.

Şuanki kodlarım:
Kod:
<?php 

$dosya = fopen('urunler.txt', 'r');
$icerik = fread($dosya, filesize('urunler.txt'));

$file=$icerik;
$dizi = explode (",",$file);


///// BASLANGIC ///////////////
foreach (array(0, 1, 2, 3, 4, 5) as &$değer) {
    



$link=$dizi[$değer];



$veri=file_get_contents($link);

	
preg_match_all('@<h1 class="fl col-12" id="productName" itemprop="name">(.*?)</h1>@si' ,$veri , $ubaslik);


echo $ubaslik[0][0];



preg_match_all('@<span class="detailValue quantity col">(.*?)</span>
</div>@si' ,$veri , $umiktar);

echo "Miktar = ";
echo  $umiktar[0][0];




preg_match_all('@<span class="product-price-not-discounted">(.*?)</span>@si' ,$veri , $ufiyat);

$fi="<br>Fiyat = ";

echo $fi ,$ufiyat[0][0];

echo "<br>";
echo "<hr>";

}

 ?>

print_r ile $dizi yi yazdırınca çıkan çıktı:
Kod:
Array ( [0] => https://www.robotistan.com/6v-250-rpm-motor-ve-tekerlek-seti [1] => https://www.robotistan.com/l298n-voltaj-regulatorlu-cift-motor-surucu-karti [2] => https://www.robotistan.com/arduino-mega-2560-r3-klon?_sgm_campaign=scn_59071286f58cc000&_sgm_source=456&_sgm_action=click [3] => https://www.robotistan.com/breadboard-2?_sgm_campaign=scn_6186b7884aa16000&_sgm_source=1617&_sgm_action=click [4] => https://www.robotistan.com/hc-sr04-ultrasonik-mesafe-sensoru?_sgm_campaign=scn_6186b7884aa16000&_sgm_source=1751&_sgm_action=click )

foreach ($dizi as $link) olarak yap
 

iwolfsshd

Üye
15 Eyl 2018
80
0
foreach ($dizi as $link) olarak yap


Hocam çok teşekkürler verdiğiniz örnek çalışmadı.Ben elimle eklerim sorun değil.Peki hocam ben bu ürünlerin fiyatlarını yazdırıyorum.Tüm ürünlerin fiyatlarını toplayıp en aşşağıda yazdırmak istiyorum.Bi kaç saattir araştırıyorum hiçbiri çalışmadı.Bu son :) Zamanınızı ayırdığınız için teşekkürler.
 

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11

Hocam çok teşekkürler verdiğiniz örnek çalışmadı.Ben elimle eklerim sorun değil.Peki hocam ben bu ürünlerin fiyatlarını yazdırıyorum.Tüm ürünlerin fiyatlarını toplayıp en aşşağıda yazdırmak istiyorum.Bi kaç saattir araştırıyorum hiçbiri çalışmadı.Bu son :) Zamanınızı ayırdığınız için teşekkürler.

Az önce kendimde de denedim, çalıştı. Son kodları bir paste.ubuntu.com sitesine yükleyip atar mısın? Fiyat toplamayı da bir diziye tüm fiyatları ekleyip aşağıdaki fonkiyonla toplayarak yapabilirsin:

PHP: array_sum - Manual
 
Son düzenleme:

iwolfsshd

Üye
15 Eyl 2018
80
0
Az önce kendimde de denedim, çalıştı. Son kodları bir paste.ubuntu.com sitesine yükleyip atar mısın? Fiyat toplamayı da bir diziye tüm fiyatları ekleyip aşağıdaki fonkiyonla toplayarak yapabilirsin:

PHP: array_sum - Manual


Hocam otomatik çekme işlemi çalıştı ben foreach ($dizi as &$link) olarak yapıyormulum & işi bozuyormuş.Şuan otomatik çekiyor ama en sona birtane boş ekliyor hocam.
Fiyat toplamayı bunu array_sumu çok denedim ama her seferinde sadece en son okuduğunu alıyor ondan öncekileri almıyor.Kodların linkini aşşağıda verdim urunler.txt içeriğinde kodun en altında.İsterseniz çalıştığım sitenin linkin özelden atabilirim.Teşekkürler hocam.


https://pastebin.ubuntu.com/p/JSnHgZpjrw/

 
Son düzenleme:

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11

Hocam otomatik çekme işlemi çalıştı ben foreach ($dizi as &$link) olarak yapıyormulum & işi bozuyormuş.Şuan otomatik çekiyor ama en sona birtane boş ekliyor hocam.
Fiyat toplamayı bunu array_sumu çok denedim ama her seferinde sadece en son okuduğunu alıyor ondan öncekileri almıyor.Kodların linkini aşşağıda verdim urunler.txt içeriğinde kodun en altında.İsterseniz çalıştığım sitenin linkin özelden atabilirim.Teşekkürler hocam.


https://pastebin.ubuntu.com/p/JSnHgZpjrw/


Sonda virgül olduğu için boş bir string daha element olarak geliyor. Boş mu kontrolü yapabilirsiniz. Array_sum hakkında da tüm fiyatları o diziye eklediğinizden emin olun.
 

iwolfsshd

Üye
15 Eyl 2018
80
0
Sonda virgül olduğu için boş bir string daha element olarak geliyor. Boş mu kontrolü yapabilirsiniz. Array_sum hakkında da tüm fiyatları o diziye eklediğinizden emin olun.

Hocam, kendim denerken kaç kez o virgülü silip geri koydum hiç birşey yok siz yazdıkdan sonra denedim oluyor bu nasıl iş :D Hocam bu fiyat toplamayı yapamadım birtürlü nasıl yapacağıma dair bir kod parçacığı, kodlarla bir örnek verebilirmisiniz? Çok teşekkürler hocam.İyi forumlar.
 

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11

Hocam, kendim denerken kaç kez o virgülü silip geri koydum hiç birşey yok siz yazdıkdan sonra denedim oluyor bu nasıl iş :D Hocam bu fiyat toplamayı yapamadım birtürlü nasıl yapacağıma dair bir kod parçacığı, kodlarla bir örnek verebilirmisiniz? Çok teşekkürler hocam.İyi forumlar.

PHP: array_push - Manual

Bununla diziye eleman ekleyip, yukarıda attığım array_sum ile toplayabilirsin. İkisinin de örnekleri var attığım linkte.
 

iwolfsshd

Üye
15 Eyl 2018
80
0
PHP: array_push - Manual

Bununla diziye eleman ekleyip, yukarıda attığım array_sum ile toplayabilirsin. İkisinin de örnekleri var attığım linkte.


Hocam şunu bi halledemedim çok denedim olmuyor array_pushla ilgili internette türkçe pek bişey yok.Hocam şu son şeyede nasıl yapacağımı kodlarla anlatırmısınız zahmet olmazsa zamanınız varsa kodları direk yazabilirimisiniz hocam bayadır uğraşıyorum şu array_sumla array_pusha bi türlü olmadı.Teşekkürler hocam bu son isteğim :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.