Merhabalar,
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);