RSS beslemesi belirli girdileri çekerek [PHP]

2 Cevap php

Yani, her bir iş kaleminin varyasyonları ile bir RSS beslemesi. Ne yapmak istediğinizi sadece belirli bir metin bölümünü içeren girişler olsun.

Örneğin:

 <item>
    <title>RADIO SHOW - CF64K - 05-20-10 + WRAPUP </title>
    <link>http://linktoradioshow.com</link>
 <comments>Radio show from 05-20-10</comments>
 <pubDate>Thu, 20 May 2010 19:12:12 +0200</pubDate>
 <category domain="http://linktoradioshow.com/browse/199">Audio / Other</category>
 <dc:creator>n0s</dc:creator>
 <guid>http://otherlinktoradioshow.com/</guid>
 <enclosure url="http://linktoradioshow.com/" length="13005" />
 </item>
 <item>
 <title>RADIO SHOW - CF128K - 05-20-10 + WRAPUP </title>
 <link>http://linktoradioshow.com</link>
 <comments>Radio show from 05-20-10</comments>
 <pubDate>Thu, 20 May 2010 19:12:12 +0200</pubDate>
 <category domain="http://linktoradioshow.com/browse/199">Audio / Other</category>
 <dc:creator>n0s</dc:creator>
 <guid>http://otherlinktoradioshow.com/</guid>
 <enclosure url="http://linktoradioshow.com/" length="13005" />
 </item>

Ben sadece dize içeren sonuçlarını görüntülemek istediğiniz CF64K. Muhtemelen gerçekten basit regex olsa da, ben bunu doğru almak etrafında başımı sarmak için görünmüyor olabilir. Ben hep sadece string 'CF64K' değil, onu çevreleyen şeyler görüntülemek mümkün görünüyor olsun.

Şimdiden teşekkürler.

2 Cevap

Sorun normal bir ifade ile XML ayrıştırmak için çalışıyoruz olmasıdır (bize sizinle bunu ayrıştırmak için çalışıyoruz kodu ayrıştırmak çalışıyorum ama değil verilerini gösteren çünkü) ben tahmin ediyorum. Yapma, bunun için uygun değildir.

RSS çözümleyici kullanın. Sağladığı API kullanarak girdileri üzerinde döngü. Onlar (basit bir dize maç değil, normal bir ifade kullanarak) gereksinimi maç olmadığını görmek için kontrol edin. Yapılacak olanları işlemek, ve bu bilmediğimiz için döngü üstüne geri atlayın.

Ne gerek basit bir alt dize maç ise, o zaman XPath'i kullanabilirsiniz:

$rss = simplexml_load_file($url);
foreach ($rss->xpath('//item[contains(title, "CF64K")]') as $item)
{
    print_r($item);
}

Aksi takdirde, öğeleri üzerinde sadece döngü ve elle filtre

$rss = simplexml_load_file($url);
foreach ($rss->xpath('//item') as $item)
{
    if (!preg_match('#CF64K#i', $item->title))
    {
        continue;
    }
    print_r($item);
}