Bir tane bot yapmamız gerekiyor. tam kodu çekiyoruz. preg_match ile kodların istenilen bölümünü alıyoruz. Fakat preg_match_all'da çıktıdaki arrayları almak isterken sıkıntı oluyor.
Not: Boşluk yok kodlar arasında çünkü curl bağlantısı yaparken "\n", "\t", "\r" değerlerini sildiriyoruz. Yani herhangi bir regex hatası değil.
preg_match('# <ul class="video_listesi">(.*?)</ul>'.'#is', $baglan, $videolar);
//echo $videolar[1];
$videos = ''.$videolar[1].'';
preg_match_all('#\s*<li><div class="resim" id="resim_(.*?)"><a href="(.*?)" title="(.*?)"><img width="(.*?)" height="(.*?)" src="(.*?)" alt="(.*?)"/></a></div><a href="(.*?)" class="video_adi" title="(.*?)">(.*?)</a><span class="bilgi"><strong>(.*?)</strong> izlenme </span></li>\s*#is',$videos, $video);
print_r($video);Kodlarını Kullandığımızda. Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) )gibisinden bi hata karşımızda. yani parçalayamıyor. Tabi düşüneceksiniz ki o zaman preg_match_all kodlarında sıkıntı var.. bizde öyle düşünmüştük. Fakat sonrasında $videos değerini $videolar[1] de bize verilen çıktıyı kendimiz girerek denedik. Aşağıdaki kodlardaki gibi.
preg_match('# <ul class="video_listesi">(.*?)</ul>'.'#is', $baglan, $videolar);
//echo $videolar[1];
$videos = ' <li><div class="resim" id="resim_2362"><a href="http://www.xxx.com/xxx/" title="xxx xxx"><img width="214" height="153" src="http://www.xxx.com/wp-content/uploads/2014/08/s_88b9f998.jpg" alt="s_88b9f998"/></a></div><a href="http://www.xxx.com/xxx/" class="video_adi" title="xxx">xxx...</a><span class="bilgi"><strong>0</strong> izlenme </span></li> <li><div class="resim" id="resim_2358"><a href="http://www.xxx.com/xxxa/" title="xxx xxxa"><img width="214" height="153" src="http://www.xxx.com/wp-content/uploads/2014/08/l_4a2deec0-240x180.jpg" alt="l_4a2deec0"/></a></div><a href="http://www.xxx.com/xxxa/" class="video_adi" title="xxx xxxa">xxx xxxa</a><span class="bilgi"><strong>0</strong> izlenme </span></li>';
preg_match_all('#\s*<li><div class="resim" id="resim_(.*?)"><a href="(.*?)" title="(.*?)"><img width="(.*?)" height="(.*?)" src="(.*?)" alt="(.*?)"/></a></div><a href="(.*?)" class="video_adi" title="(.*?)">(.*?)</a><span class="bilgi"><strong>(.*?)</strong> izlenme </span></li>\s*#is',$videos, $video);
print_r($video);Ve çıkan sonuç aynen şöyle oldu.Array ( [0] => Array ( [0] => <li><div class="resim" id="resim_2362"><a href="http://www.xxx.com/xxx/" title="xxx xxx"><img width="214" height="153" src="http://www.xxx.com/wp-content/uploads/2014/08/s_88b9f998.jpg" alt="s_88b9f998"/></a></div><a href="http://www.xxx.com/xxx/" class="video_adi" title="xxx">xxx...</a><span class="bilgi"><strong>0</strong> izlenme </span></li> [1] => <li><div class="resim" id="resim_2358"><a href="http://www.xxx.com/xxxa/" title="xxx xxxa"><img width="214" height="153" src="http://www.xxx.com/wp-content/uploads/2014/08/l_4a2deec0-240x180.jpg" alt="l_4a2deec0"/></a></div><a href="http://www.xxx.com/xxxa/" class="video_adi" title="xxx xxxa">xxx xxxa</a><span class="bilgi"><strong>0</strong> izlenme </span></li> ) [1] => Array ( [0] => 2362 [1] => 2358 ) [2] => Array ( [0] => http://www.xxx.com/xxx/ [1] => http://www.xxx.com/xxxa/ ) [3] => Array ( [0] => xxx xxx [1] => xxx xxxa ) [4] => Array ( [0] => 214 [1] => 214 ) [5] => Array ( [0] => 153 [1] => 153 ) [6] => Array ( [0] => http://www.xxx.com/wp-content/uploads/2014/08/s_88b9f998.jpg [1] => http://www.xxx.com/wp-content/uploads/2014/08/l_4a2deec0-240x180.jpg ) [7] => Array ( [0] => s_88b9f998 [1] => l_4a2deec0 ) [8] => Array ( [0] => http://www.xxx.com/xxx/ [1] => http://www.xxx.com/xxxa/ ) [9] => Array ( [0] => xxx [1] => xxx xxxa ) [10] => Array ( [0] => xxx... [1] => xxx xxxa ) [11] => Array ( [0] => 0 [1] => 0 ) )Yani kendi elimle bu bilgileri girdiğim zaman parçalıyor fakat otomatik olarak $videolar[1]; i hedef gösterdiğim zaman olmuyor. Bunun sebebi nedir veya nasıl çözebilirim. Yani en azından $videolar[1] değişkeninden çıkarıp sanki oraya kendi elimle girmişim gibi nasıl gösterebilirim preg_match_all'a.. Umarım sorunu anlamışsınızdır..
-----------------ÇÖZÜLDÜ-----------------------
Şöyle bir çözüm bulduk ilk başta htmlspecialchars ile bir inceleyelim dedik baktık gizli videobaşlangıç ve videobitiş notları varmış onları sildik ardından preg_match_all kodlarını htmlspecialchars 'a göre uyguladık. ve array sonuçları geldi..
preg_match('#<ul class="video_listesi">(.*?)</ul>'.'#is', $baglan, $videolar);
$videos8 = str_replace( '<!--video başlangıç-->', '', $videolar[1]);
$videos9 = str_replace( '<!--/video bitiş-->', '', $videos8);
$videos = htmlspecialchars($videos9);
preg_match_all('#\s*<li><div class="resim" id="resim_(.*?)"><a href="(.*?)" title="(.*?)"><img width="(.*?)" height="(.*?)" src="(.*?)" alt="(.*?)" /></a></div><a href="(.*?)" class="video_adi" title="(.*?)">(.*?)</a><span class="bilgi"><strong>(.*?)</strong> izlenme </span></li>\s*#is',$videos, $video);
print_r($video);