Preg_Match İle İstenilen Kısmı Almak (Yardım)
-
Bir siteden veri çekeceğim ama td'leri tek satırda yapmamışlar bir türlü alamadım. Aynen yapıştırıyorum. <td>'den sonra alt satıra inip 4 tane de tab koymuş galiba.
</td><td>
burası lazım
</td><td>
burası da lazım
</td><td>
bir de bu lazım
</td><td>Tek satır olsa aşağıdaki şekilde alabiliyorum:
preg_match("#<td>(.*)</td>#i",$satir,$matches)
-
Kaynağı galiba tek seferde çekmiyorsun.
Curl ile çekip bir değişkene at
<?
$desen="^ </td><td>
(.*?)
</td><td>
(.*?)
</td><td>
(.*?)
</td><td>^i";
$kaynak=" </td><td>
burası lazım
</td><td>
burası da lazım
</td><td>
bir de bu lazım
</td><td>"; //burayı curl ile çektiğimizi varsayıyorum.
preg_match($desen,$kaynak,$a);
print_r($a);
?> -
hoca ne uğraşıosun
$x = explode("</td><td>",$degisken);
sonra $x[1],$x[2] vs den çek...
-
h4ckinger bunu yazdı:
-----------------------------
-----------------------------Kaynağı tek seferde çekiyorum ama curl ile değil. Sadece düzenli ifadeyi yazamadım. Senin yazdığın şekilde desen oluşturdum ama yine olmadı. Seninkinden alıyor benim yapıştırdığımdan almıyor. Tabloyu aynen kaynak ve desen değişkenlerine yapıştırdım. Desende de alacağım yerleri (.*?) yaptım ama almadı.
http://nowarez.net/test.html Buraya çekeceğim sayfayı bir kısmını keserek koydum. Buradan deneyebilirsiniz. -
xz bunu yazdı:
-----------------------------
-----------------------------preg_match'in kullanımın biliyorum daha önce kullandım ama buradaki siteden çekecek düzenli ifadeyi oluşturamadım. Dediğin gibi </td><td> leri boşlukla değiştirip satır satır aldıktan sonra her satırın başındaki sonundaki boşlukları silerek belki olur ama öyle yaparsam 3-4 işlemden geçirmiş olacağım. Tek satırda kaynakta değişiklik yapmadan preg_match ile alacağım kısmı almak istiyorum.
-
Bu arada kaynağı çekme ile ilgili de problem var şimdi farkettim. Php dosyasının çalışacağı sunucuda php 4.2 ya da ona yakın bir versiyon var ve curl falan yüklü olduğunu sanmıyorum. Ben kaynağı file ile çekiyordum o da satırları diziye atıyor. O yüzden düzenli ifadeyi oluştursam bile çalışmaz şu anda. Onun başka bir çaresine bakacağım zaten. Şimdilik kaynağın 10-15 satırını bir değişkene atarak deniyorum.
-
ZoktriP bunu yazdı:
-----------------------------hoca ne uğraşıosun
$x = explode("",$degisken);
sonra $x[1],$x[2] vs den çek...
-----------------------------Doğru ne uğraşıyorum ki :) Kaynağı fopen ile çekince bu şekilde oldu ama preg_match ile olması gereken düzenli ifadeyi hala oluşturamadım. Onla biraz daha uğraşacağım olmazsa bu şekilde yapacağım.
-
h4ckinger yazdığının mantıgını çözemedim açıkcası =))
kullanılması gereken şöyle bişe olmalı..
$pattern="~<td>(.|\s)*? </td>~i";
preg_match_all($pattern ,$veri,$result); -
uygulaman gereken kod;
(buraya yazınca bazı taglar filtreleniyor, o yüzden link verdim)
Çalışan hali;
Yazı kutusuna
</td><td>
burası lazım
</td><td>
burası da lazım
</td><td>
bir de bu lazım
</td><td>kopyala, yolla, sonucu versin.
-
hotboy bunu yazdı:
-----------------------------
-----------------------------Sağol çalışıyor gibi. explode ile de oldu ama siteye kontrol mü ne koydularsa firefox ile giriyorum sayfa normal ama fopen, curl ile falan sayfayı çekince firefoxda açılan şekilde gelmiyor. Sayfa eksik geliyor ve ortada bir kısımda object not found diyor. Onun yazdığı yer çekmek istediğim verilerin olduğu tablo olması lazım.
-
sirhot bunu yazdı:
-----------------------------h4ckinger yazdığının mantıgını çözemedim açıkcası =))
kullanılması gereken şöyle bişe olmalı..
asdasdasd//table kodları bozuyor postu
-----------------------------
sabah acelem vardı da : ( newline ve spaceler ile uğraşmak istemedim
arkadaş sanırım sorunu çözdü
