• 17-03-2009, 15:05:26
    #10
    Üyeliği durduruldu
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    explode ile daha zor üstad. şöyle düşünüyorumda enterlar bozuyor biraz
    adam mesela input u
    <input type="text" id="deneme" />
    gibi yazabilirken
    <input
    type="text"
    id="deneme" />
    gibide yazabilir.
    explode ile daha zor yani regex ile explode a göre daha kolay ama o da zor soru tümden kazik zaten
    enter lar o kadar zor değil hocam.

    preg_match('#<([^<].*?)id=([\"\']+)deneme1([\"\' ]+)(.*?)>(.*?)</body>#is',$icerik,$idvegerisi);

    bu regex dediğin id ye ait bileşeni ve sonrasını alır. ondan sonra bu id nin hangi tag a ait olduğunu bulacaksın (a,img,href,div...). ondan sonra da o açılan tag ın kapatan tagını bulacaksın. özellikle div ve table lar zorlar. bunlar içiçe olabildiklerinden dolayı explode dan başka şansın yok.
  • 17-03-2009, 15:05:49
    #11
    Üyeliği durduruldu
    uysal_rockci adlı üyeden alıntı: mesajı görüntüle
    div , form , ya da nesne neyse onu da belirterek seçim yapılabilir, yoksa iyice karmaşık olur bu
    ama güzel düşünce, işe yarar bi Class olacaktır
    ben biraz daha regex okumaya devam edeyim biraz zayif kalmisim bu konuda. Bir bitsin dehşet olacak. video ders konusu

    Ntie adlı üyeden alıntı: mesajı görüntüle
    string pattern = @"<form[ \t]*(I|i)d=(""?)(?<id>\w+)(""?)[ \t].*</form>";
    Son çare olarak form içerisindeki id'i almak kalıyor.
    :S
    hepsi için tek tek yazayim mi hocam kaçtane html objesi olasiligi vardir o konuda bile fikrim yok tek tek yazarsak anamiz aglar
  • 17-03-2009, 15:15:20
    #12
    Üyeliği durduruldu
    MC_delta_T adlı üyeden alıntı: mesajı görüntüle
    enter lar o kadar zor değil hocam.
    preg_match('#<([^<].*?)id=([\"\']+)deneme1([\"\' ]+)(.*?)>(.*?)</body>#is',$icerik,$idvegerisi);
    bu regex dediğin id ye ait bileşeni ve sonrasını alır. ondan sonra bu id nin hangi tag a ait olduğunu bulacaksın (a,img,href,div...). ondan sonra da o açılan tag ın kapatan tagını bulacaksın. özellikle div ve table lar zorlar. bunlar içiçe olabildiklerinden dolayı explode dan başka şansın yok.
    preg_match('#<([^<].*?)id=([\"\']+)sonuc([\"\' ]+)(.*?)>(.*?)</([^>].*?)>#is',$icerik,$idvegerisi);
    gibi birşey blok halindeki herhangi bir veriyi sizin verdiginiz şekilde alır. Ben birde normal tag şeklinde olan <input type="text" /> gibi şeyler içinde kafa yorayim az. sonra ikisini birleştirmeye kasayim gerçi böylede div in özelliklerinide yemiş oluyoruz. özellikleride lazim ah ahhh

    yinede teşekkürler
  • 19-03-2009, 04:41:32
    #13
    Üyeliği durduruldu
    PHP Simple HTML DOM Parser
    PHP: DOM - Manual

    den birşeyler cikacagini düşüneren calismalarima devam etmkteyim ilgili arkadaşlara duyrulur
  • 13-10-2010, 20:16:19
    #14
    @macchess kralsın (: iki saattir arıyom. senin kod basit ve etkili(mükemmel). teşekkürler.
  • 13-10-2010, 20:49:44
    #15
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Şöyle bir şey yazdım ama denemedim:
    function get_valueById($id, $content)
    {
    	$tag_name = preg_match('<([a-zA-Z]{1,10}).*?id="' . preg_quote($id) . '".*?>', $content, $matches) ? $matches[1] : '';
    
    	if (empty($tag_name))
    		return false;
    
    	$get_them_between = preg_match('<' . $tag_name . '.*?id="' . preg_quote($id) . '".*?>(.*?)<\/' . $tag_name . '>', $content, $matches) ? $matches[1] : '';
    
    	return $get_them_between;
    }
  • 13-10-2010, 21:32:58
    #16
    Üyeliği durduruldu
    bu dediğinizin yüzlerce varyasyonu hazırda var zaten hocam.

    örnek vermek gerekirse;

    http://code.google.com/p/phpquery/ Css selector gibi çalışıyor. (jquerydeki gibi )
    http://github.com/visionmedia/php-selector bu da aynı şekilde.
    http://framework.zend.com/manual/en/zend.dom.query.html bu da aynı şekilde zend fw nin
    http://querypath.org/ bunu da inceleyin
    http://fabien.potencier.org/article/...-css-selectors bitane daha.

    http://simplehtmldom.sourceforge.net/ bunu da inceleyin


    bunlarla beraber phpclasses.org da da tonlarca bu işi yapan class var.

    http://www.phpclasses.org/package/58...sing-LINQ.html

    bu da benim sınıfım.
    $linq->query("SELECT id,style,class FROM html_file(dosya.html).div WHERE text LIKE '%icerik&'  OR id in(1,2,3,4) OR  class='test' ");
    ve daha istemediğiniz kadar sınıf zaten var.

    iyi çalışmalar.
  • 13-10-2010, 21:35:01
    #17
    Üyeliği durduruldu
    by_grafitus adlı üyeden alıntı: mesajı görüntüle
    Şöyle bir şey yazdım ama denemedim:
    function get_valueById($id, $content)
    {
    	$tag_name = preg_match('<([a-zA-Z]{1,10}).*?id="' . preg_quote($id) . '".*?>', $content, $matches) ? $matches[1] : '';
    
    	if (empty($get_it))
    		return false;
    
    	$get_them_between = preg_match('<' . $tag_name . '.*?id="' . preg_quote($id) . '".*?>(.*?)<\/' . $tag_name . '>', $content, $matches) ? $matches[1] : '';
    
    	return $get_them_between;
    }
    if(empty($get_it)) yerine empty $tag_name olacak sanırım sonradan değişince gözden kaçmış olmalı
  • 13-10-2010, 22:00:21
    #18
    Evet. En başta öyle yapmıştım. Ancak sonradan fazlalık olduğunun farkına vardığımdan değiştirdim. Teşekkürler.