Php Regex Sorunum
-
Arkadaşlar regex ile iki şart arasındaki veriyi preg_match_all('@<a href="/(.*?)"@si',$anasayfakodal,$sehirler); şeklinde alabiliyorum fakat aşağıdaki şekildeki bir kod da
<article> <h2> sfsfkjsfkjs </h2> <h2> sdgsdgsd </h2> </article> <h2> sflsfklsd </h2>
sadece <article> ile </article> arasındaki kodlar arsında h tagları arasında kalan kısımları almak istiyorum bunu ne şekilde yapabilriiz ?
Not: kod blogunu örnek olsun diye salladım yoksa bu kadar kısa birşey olsa alternatif yollar üretirdim zaten. Çok daha uzun ve karışık kodlar için bu mantığı soruyorum
-
Bunlar bir parser gerektiren türden işlemler ama Regex bir parser değildir o yüzden bunu çözmek için doğru yol Regex değil @coder2.
PHP hem derlenmiş eklenti hem de kütüphane zengini bir dil. Bunun için Regex yerine bir DOM parser kullanmanı şiddetle öneririm.
buzukatak tarafından 15/Kas/15 00:07 tarihinde düzenlenmiştir -
<article>*</article> arasında kaç tane <h2>*</h2> tagı olduğunu saydırıp sonradan for döngüsünde iki boyutlu array kullanarak yapabilirsin
-
-
buzukatak bunu yazdı
Bunlar bir parser gerektiren türden işlemler ama Regex bir parser değildir o yüzden bunu çözmek için doğru yol Regex değil @coder2.
PHP hem derlenmiş eklenti hem de kütüphane zengini bir dil. Bunun için Regex yerine bir DOM parser kullanmanı şiddetle öneririm.
hişşş, tbt'deki çoğu adama regex bile gereksiz
string find fonksiyonları dururken :D
-
2 adımda yapacaksın, önce preg_match ile article arasındaki datayı çekeceksin. Dönen datanın 0. indexinden, h2 leri preg match all ile çekeceksin.
tek adımda yapman mümkün değil.
preg_match('<article>(.*?)<\/article>', $open, $result);
preg_match_all('<h2>(.*?)<\/h2>', $result[0], $result2);
gibi...
-
Cevaplar için teşekkürler , verdiğiniz bilgiler ışığında sorunu çözdüm. @ozgunlu hocam guzel mantik , bende dediğiniz gibi yapıyordum ama verimlilik kafama takılmisti şahsen ondan tekrar sordum
-
-
1234567B bunu yazdı
Bunu yazmak için girmiştim.
-
Gerçekten güzel bir yöntemmiş , geç olmuş öğrendiğim ama :)