Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz orkester #10048 üzenetére

    Pedig azzal kezdtem a hozzászólásomat, hogy leírtam, melyik foreach blokkon belülre kellene tenned. :)

    Mutatok inkább komplett kódot a tiéd alapján, amiben definiálok egy my_var_export() függvényt, ami tesztelésre kiváló, hogy megnézd, mi az adott változó tartalma, és az adott változó milyen típusú. Nálam most az RSS feedet tartalmazó XML-fájl neve test.xml lesz.
    A teszt kedvéért az XML-fájlt kiegészítettem a tiéden felül egy saját <item>-mel is.

    index.php:

    <?php

    header('Content-Type: text/html; charset=utf-8');

    function my_var_export($variable, $text = '...') {
    return '<p>' . $text . ' (type: "' . (gettype($variable)) . '"):</p><pre>' . var_export($variable, TRUE) . '</pre>';
    }

    $feed_url = 'test.xml';

    libxml_use_internal_errors(true);
    $RSS_DOC = simpleXML_load_file($feed_url);
    if (!$RSS_DOC) {
    echo "Failed loading XML\n";
    foreach (libxml_get_errors() as $error) {
    echo "\t", $error->message;
    }
    }


    foreach ($RSS_DOC->channel->item as $RSSitem) {

    $categories = array();

    foreach ($RSSitem->category as $category_index => $category) {
    $categories[] = $category;
    }

    $categories_string = implode(',', $categories);

    echo my_var_export($categories_string, '$categories_string');

    }

    test.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0">

    <channel>
    <title>Test RSS feed</title>
    <link>http://example.com</link>
    <description>Read RSS feed</description>
    <item>
    <link>
    http://www.pafi.hu/_pafi/palyazat.nsf/ervdocidweburlap/490FAC2B35FC9E0EC1257A0F0038DC43
    </link>
    <title>
    <![CDATA[
    Milyen kérdést intéznék a miniszterekhez, ha képviselő lennék?
    ]]>
    </title>
    <description>
    <![CDATA[
    A kíirók pályázatot hirdetnek gyermekintézmények számára a Gyermekek Világnapja alkalmából.
    ]]>
    </description>
    <category>gyermek, ifjúság</category>
    <category>közművelődés</category>
    <category>művészet</category>
    <category>szociális</category>
    <pubDate>Sun, 03 Jun 2012 23:51:34</pubDate>
    </item>
    <item>
    <link>
    http://prohardver.hu/tema/php_kerdesek_2/friss.html
    </link>
    <title>
    <![CDATA[
    PHP kérdések
    ]]>
    </title>
    <description>
    <![CDATA[
    A Prohardver! lapcsalád PHP-kérdésekkel foglalkozó fóruma.
    ]]>
    </description>
    <category>webfejlesztés</category>
    <category>programozás</category>
    <category>PHP</category>
    <category>Prohardver!</category>
    <pubDate>Thu, 07 Jun 2012 13:05:05</pubDate>
    </item>
    </channel>

    </rss>

    ==============================================

    KIMENET:

    $categories_string (type: "string"):
    'gyermek, ifjúság,közművelődés,művészet,szociális'

    $categories_string (type: "string"):
    'webfejlesztés,programozás,PHP,Prohardver!'

    ==============================================

    Ebből jól látszik, hogy vesszővel elválasztva bekerült egy változóba az összes kategória.
    Természetesen a sima vesszős megoldás nem feltétlenül jó, ha a fent látható módon a "gyermek, ifjúság" egyetlen kategóriának minősül, mert egy vessző mentén történő "szétrobbantásnál" külön kategóriába kerülhet.
    Ezért a legjobb lenne szépen szétválasztani, many-to-many relation alkalmazásával az adatbázisban.

    [ Szerkesztve ]

    Sk8erPeter

Új hozzászólás Aktív témák