Ajax Kodunu Php'ye Çevirebilecek Var Mı?
-
if (!$result) { ... } yerine
// curl_errno($ch) hatanın kodunu verir // curl_error($ch) hatanın dizgesini verir. if( curl_errno($ch) > 0 ) { die('curl error: '.curl_error($ch)); } // curl_getinfo($ch) ile birçok bilgiyi içeren // bir dizi elde ediyoruz $tmp = curl_getinfo($ch, CURLINFO_HTTP_CODE); if( $tmp != 200 ) { die('curl http code error:'.$tmp); } if( strlen($result) == 0 ) { die('sonuc sifir oldugu icin devam edilemiyor.'); }kodunu yaz. Açıklamaları koda yazdım ama ekrar yapalım açıklama.
İlk bölümde curl bir şekilde hata verirse ki genelde bağlantıda oluşan problemler için hataları geri çevirir. İnternet bağlantısı koptu, bağlantı çok yavaştı, dns çalışmadı gibi.. Tabiki ingilizce çıktılar verecektir.
İkinci bölümde curl_getinfo( ... ) ile çeşitli bilgileri aldık http kodu 200'den farklıysa hata veriyor.
Veri boşta gelebilir. Eğer boş gelirse sen json_decode() yaptığında title, pageid gibi verileri içermediğinden hata verir. Bunun önüne biraz olsun geçtik. Devamı json_decode()'da çağıracağın verilerin varlığını kontrol etmektir. O da senin ellerinden öpsün.
-
PcK0 bunu yazdı
if (!$result) { ... } yerine
// curl_errno($ch) hatanın kodunu verir // curl_error($ch) hatanın dizgesini verir. if( curl_errno($ch) > 0 ) { die('curl error: '.curl_error($ch)); } // curl_getinfo($ch) ile birçok bilgiyi içeren // bir dizi elde ediyoruz $tmp = curl_getinfo($ch, CURLINFO_HTTP_CODE); if( $tmp != 200 ) { die('curl http code error:'.$tmp); } if( strlen($result) == 0 ) { die('sonuc sifir oldugu icin devam edilemiyor.'); }kodunu yaz. Açıklamaları koda yazdım ama ekrar yapalım açıklama.
İlk bölümde curl bir şekilde hata verirse ki genelde bağlantıda oluşan problemler için hataları geri çevirir. İnternet bağlantısı koptu, bağlantı çok yavaştı, dns çalışmadı gibi.. Tabiki ingilizce çıktılar verecektir.
İkinci bölümde curl_getinfo( ... ) ile çeşitli bilgileri aldık http kodu 200'den farklıysa hata veriyor.
Veri boşta gelebilir. Eğer boş gelirse sen json_decode() yaptığında title, pageid gibi verileri içermediğinden hata verir. Bunun önüne biraz olsun geçtik. Devamı json_decode()'da çağıracağın verilerin varlığını kontrol etmektir. O da senin ellerinden öpsün.
hocam yine hata verdi. örneğin $url = 'https://tr.wikipedia.org/w/api.php?action=parse&format=json&prop=text§ion=0&page=Hande%20Yener'; yerine Handeewkjrldl yazıyorum aşağıdaki hatayı veriyor. wikipedia dan sonuç bulamayınca hata veriyor. aslında farklı bir dizi veriyordur ondan dolayı böyle yapıyor olabilir.
Warning: get_object_vars() expects parameter 1 to be object, null given in /home/asd/public_html/asd.php on line 32 $text = get_object_vars($veri->parse->text); // 32. satır
-
Yazdık oraya eşşek kadar dimi? Devamı json_decode()'da çağıracağın verilerin varlığını kontrol etmektir. O da senin ellerinden öpsün. E biraz sen kas dedik.
Ben kastırıcam burayı sana. Şimdi Handeakjladwjadwjklwadkj sayfasını çağırdığında haliyle o sayfa bulunamadı sayfasını getiriyor. O sayfada senin istediğin veriler olmadığından hata veriyor. Verilerin tanımlı olup olmadığını kontrol edeceksin. De php de yeni misin?
-
PcK0 bunu yazdı
Yazdık oraya eşşek kadar dimi? Devamı json_decode()'da çağıracağın verilerin varlığını kontrol etmektir. O da senin ellerinden öpsün. E biraz sen kas dedik.
Ben kastırıcam burayı sana. Şimdi Handeakjladwjadwjklwadkj sayfasını çağırdığında haliyle o sayfa bulunamadı sayfasını getiriyor. O sayfada senin istediğin veriler olmadığından hata veriyor. Verilerin tanımlı olup olmadığını kontrol edeceksin. De php de yeni misin?
normalde asp biliyorum hocam. aspdeki mantığı php uyarlayıp aratıyorum googleda. çıkan sonuçlardan deneye yanıla çalıştırıyorum. üç aşağı beş yukarı aynı, sadece biraz zaman alıyor. örneğin aşağıdaki 4 satır replace kodu 2 saatimi aldı. şimdi ben replace ettirdiğim için title vs gelmiyor. onun yerine count ile diziyi saydırayım dedim ama if else de işleme alınmayan kısımda bile olsa hata verdirdi.
bu arada bendeki son hali aşağıdaki gibi belki işine yarayan biri çıkar.
<?php
$url = 'https://tr.wikipedia.org/w/api.php?action=parse&format=json&prop=text§ion=0&page=Hande%20Yener';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'TahriBot/1.0 (http://www.tahribat.com/)');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
if (!$result) {
exit('cURL Error: '.curl_error($ch));
}
$veri = json_decode($result);
$text = get_object_vars($veri->parse->text);
$sonuc = $text['*'];
$sonuc = preg_replace('@<(table|ol|sup)[^>]*>.*?</\1>@is', '', $sonuc);
$sonuc = preg_replace('/<!--(.*)-->/Uis', '', $sonuc);
$sonuc = preg_replace("/<.*?>/", "", $sonuc);
$sonuc = str_replace("\n", "", $sonuc); //yeni satır karakteri
$sonuc = str_replace("\r", "", $sonuc); //satırbaşı karakteri
echo $sonuc;
?> -
Seni biraz üşengeçsin diye algıladığımdan biraz yüklenmek istedim.
O zaman sana biraz genel PHP görüşlerimi söyleyeyim. PHP'nin kendi kodlarında biraz düzensizlik var. str_replace(search, replace, string) şeklinde iken substr(string, baslangic) gibi.. Bende ara ara karıştırıyorum acaba hangisi ilk kullanılıyordu diye düşünüyor ya da hata yapıyorum.
Ve pek çok şeyin birden fazla değil en az 10dan fazla çözümü var :) Sanırım popüler bir dil olmasının sebebi bu :)
Ve kodu tekrar düzenledim. preg ve str replace yapman yerine strip_tags() ile html ve php kodlarını temizleyebilirdin. Seninde bileceğin üzere PHP ASP'den çok daha yeni bir dil ve daha fazla temel olaylara desteği var. Olsun preg_replace'te önemli bir kod. Yazdıklarını incelemedim ama ekran sonucun doğru gibi gözüküyor. En azından onları deneyimleyebildin.
<?php $url = 'https://tr.wikipedia.org/w/api.php'. '?action=parse&format=json'. '&prop=text§ion=0&page=Hande%20Yener'; $useragent = 'TahriBot/1.0 (http://www.tahribat.com/)'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); if( curl_errno($ch) > 0 ) { die('curl error: '.curl_error($ch)); } $tmp = curl_getinfo($ch, CURLINFO_HTTP_CODE); if( $tmp != 200 ) { die('curl http code error: '.$tmp); } if( strlen($result) == 0 ) { die('curl result length turned zero'); } $result = json_decode($result, true); if( !isset($result['parse']['text']['*']) ) { die('curl result $result->parse->text->* not found'); } $tmp = $result['parse']['text']['*']; $tmp = strip_tags($tmp); echo($tmp);
PcK0 tarafından 04/Eyl/15 03:14 tarihinde düzenlenmiştir -
teşekkür ederim hocam. benim replace kodlarıyla değiştirdim, şuan tam istediğim gibi oldu. strip_tags ile denemiştim ama tam istediğim gibi olmadı. sanırım onunla sadece html kodlarını temizleyebiliyoruz. verinin üst kısmında gereksiz bir bölüm vardı <table></table> arasında. hem bu tagları hem de içerisini sildirmek için en pratik bunlar geldi. vt bağlantılarını vs çözdüm ama php çok ivirli civirli. artık sora sora, araştıra araştıra öğrenicem :)
-
regex de aradığın içeriği aramadan önce
stristr fonksiyonu ile o aranacak olan bilginin orda olup olmadığını kontrol et yoksa bir sonraki işlem varsa regex çalışsın.
bunuda if else ile yapacaksın.
