Oldal: 1 / 2 12 UtolsóUtolsó
Eredmény: 1 - 10 (15) összesen

Téma: XML & preg_match_all()

  1. #1
    Törzsvendég
    Csatlakozott
    09-01-29
    Hozzászólás
    124
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás XML & preg_match_all()

    Sziasztok!

    A segítségeteket szeretném kérni, mert már rengeteg formulát próbáltam, de képtelen vagyok megírni egy olyan patternt, ami az alábbi sztringből

    Kód:
    <categories>
        <category>Valami</category>
        <category>Amaz</category>
        <category>Egysmás</category>
    </categories>
    kinyeri a következőket egy mozdulatra:

    Kód:
    <category>Valami</category>
    <category>Amaz</category>
    <category>Egysmás</category>
    Ez a struktúra egy hosszú XML fájlban van, és több ezerszer előfordul a fenti blokk, de változó, hogy hány darab <category> található a <categories>-on belül. Előfordul olyan is, hogy egy sincs benne, tehát üres. Előre is köszönöm a segítségeteket!

    Hasonló témák:



  2. #2
    Bölcs
    Csatlakozott
    08-10-05
    Hozzászólás
    1.087
    Begyűjtött 139 köszönetet
    110 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    Ilyesmire gondolsz?

    /<categories>(.*)<\/categories>/s


    Mivel próbálkoztál?



  3. #3
    Törzsvendég
    Csatlakozott
    09-01-29
    Hozzászólás
    124
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    Idézet spontan eredeti hozzászólása Hozzászólás megtekintése
    Ilyesmire gondolsz?

    /<categories>(.*)<\/categories>/s


    Mivel próbálkoztál?
    Igen, ilyesmivel próbálkoztam én is, de ez csak addig működik, amíg egyszer fordul elő a sztringben a <categories> és </categories> páros. Ha már mondjuk legalább kétszer van, így:

    Kód:
    <categories>
        <category>1. Valami</category>
        <category>2. Valami</category>
    </categories>
    <categories>
        <category>1. Ezaz</category>
        <category>2. Ezaz</category>
    </categories>
    akkor meghanyatlik a script. Márpedig ez vagy ezerszer előfordul. Úgy kellene a fenti példából kihámozni ezeket, hogy preg_match_all() kimeneteli tömbjében az egyik elem tartalmazza azt, hogy "<category>1. Valami</category><category>2. Valami</category>", a következő eleme a "<category>1. Ezaz</category><category>2. Ezaz</category>"-t, és így tovább.



  4. #4
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.605
    Begyűjtött 1.332 köszönetet
    828 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    miert nem hasznalsz xml-t kezeo fuggvenyeket? a simplexml-el tokeletesen megvalosithato amit szeretnel

    http://uk3.php.net/manual/en/book.simplexml.php



  5. #5
    Bölcs
    Csatlakozott
    07-08-28
    Hozzászólás
    1.024
    Begyűjtött 146 köszönetet
    105 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    http://keithdevens.com/software/phpxml

    kicsit régi class de jól müködik. az egyik oldalt megeteted a stringgel ami az xml-edet tartalmazza a másik oldalt kijön egy tömb, amit a szokott tömb kezelő fügvényekkel be tudsz járni.



  6. #6
    Törzsvendég
    Csatlakozott
    09-01-29
    Hozzászólás
    124
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    Idézet Geri07 eredeti hozzászólása Hozzászólás megtekintése
    miert nem hasznalsz xml-t kezeo fuggvenyeket? a simplexml-el tokeletesen megvalosithato amit szeretnel

    http://uk3.php.net/manual/en/book.simplexml.php
    Egy ~9 MiB-os fájlt kellene feldolgoznom a 30 sec-es futási idő alatt, de ennyi idő alatt egybe az egészet nem teljesíti a szerver, ezért úgy terveztem, hogy ciklukusan mindig X sort járok be, és preg_match_all() kikeresem a nekem fontos részt. (AJAX gondoskodna a szükséges újrahívásokról.) Ezért nem gondoltam eddig beépített függvényekre, mert ez csak egyben képes megemészteni az egészet, és nem végez 30 másodperc alatt. Közben viszont született egy új ötletem, amibe már úgy néz ki bele fog férni ez a függvény, szóval köszönöm!



  7. #7
    Bölcs
    Csatlakozott
    07-08-28
    Hozzászólás
    1.024
    Begyűjtött 146 köszönetet
    105 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    lpmorpheus: egy minta xml-t ha adsz hogy mi az a 9 megás adat tömeg amit nem lehet feldolgozni 9 másodperc alatt...



  8. #8
    Törzsvendég
    Csatlakozott
    09-01-29
    Hozzászólás
    124
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    Idézet TLoF eredeti hozzászólása Hozzászólás megtekintése
    lpmorpheus: egy minta xml-t ha adsz hogy mi az a 9 megás adat tömeg amit nem lehet feldolgozni 9 másodperc alatt...
    Kód:
    <product id="32082" type="1">
    		<code><![CDATA[28202]]></code>
    		<manufacturer><![CDATA[MSI]]></manufacturer>
    		<name><![CDATA[P45 Zilent IntelP45 LGA775 ATX alaplap]]></name>
    		<shortdescribe><![CDATA[LGA775, Intel P45, DDRII-1200-ig (OC), 2xPCI-E x16, ATX, Firewire, Gigabit LAN, Raid, Zajtalan, Circu-Pipe 2, Dr. Mos, APS, Japán kondenzátorok, + ZALMAN Cpu hütő!]]></shortdescribe>
    		<status><![CDATA[Raktáron]]></status>
    		<discount>N</discount>
    		<nettoprice_a>48458.000</nettoprice_a>
    		<nettoprice_b>0.000</nettoprice_b>
    		<nettoprice_c>0.000</nettoprice_c>
    		<nettoprice_d>0.000</nettoprice_d>
    		<bruttoprice_a>58150.000</bruttoprice_a>
    		<bruttoprice_b>0.000</bruttoprice_b>
    		<bruttoprice_c>0.000</bruttoprice_c>
    		<bruttoprice_d>0.000</bruttoprice_d>
    		<tax>20</tax>
    		<url><![CDATA[http://www.egywebbolt.hu/main.php?l=hu&m=0&p=6&pi=_32082]]></url>
    		<pictures>
    			<picture>
    				<urlsmall><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_1_S.jpg]]></urlsmall>
    				<urlmedium><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_1_M.jpg]]></urlmedium>
    				<urllarge><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_1_L.jpg]]></urllarge>
    				<urlextralarge><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_1_XL.jpg]]></urlextralarge>
    			</picture>
    			<picture>
    				<urlsmall><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_2_S.jpg]]></urlsmall>
    				<urlmedium><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_2_M.jpg]]></urlmedium>
    				<urllarge><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_2_L.jpg]]></urllarge>
    				<urlextralarge><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_2_XL.jpg]]></urlextralarge>
    			</picture>
    			<picture>
    				<urlsmall><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_3_S.jpg]]></urlsmall>
    				<urlmedium><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_3_M.jpg]]></urlmedium>
    				<urllarge><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_3_L.jpg]]></urllarge>
    				<urlextralarge><![CDATA[http://shops.mirror.hu/media/rampictures/0386776001235664791/prodpic_27950_3_XL.jpg]]></urlextralarge>
    			</picture>
    		</pictures>
    		<categories>
    			<category><![CDATA[Számítástechnika->Alaplap->Intel->Intel LGA775]]></category>
    		</categories>
    	</product>
    Gyakorlatilag egy webáruháznak a termékeit tartalmazza, ami azt jelenti, hogy az XML fájl általában ~188 ezer sorból áll. Talán egyszerűbb lenne, ha az adatbázisból építeném fel a kívánt szűrt új XML fájlt, csak az a baj, hogy ahhoz nincs hozzáférési jogosultsága a tulajnak, mert bérli a felületet. Tehát, gyakorlatilag egy olyan scriptet kell írnom, ami ebből dolgozik, vagyis 30 másodperc alatt ki kell nyernem a szükséges adatokat, és azokat ki is írni a megfelelő formában. Mindezt úgy, hogy a szervernek le is kell töltenie a forrás .xml-t. Bár ezt .gz-be csomagolva teszi, de még így is szűkös az idő ... (Ezt megoldom, úgyhogy ez nem probléma-téma.)



  9. #9
    Bölcs
    Csatlakozott
    07-08-28
    Hozzászólás
    1.024
    Begyűjtött 146 köszönetet
    105 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    Ha nekem kellene ilyennel foglalkozni akkor nagyjából igy kezdenék hozzá:
    * letölteni az adat file-t.
    * kicsomagoni a tar.gz -ét.
    * az xml-t feldolgozni valamilyen formában az igy nyert adat tömböt serializáni, és kapott végeredményt elmenteni.
    * A bejövő lap kéréseket a serializált adatból kiszolgálni. A serializáció / deserializáció nagyság rendekkel gyorsabb mint az xml parsolás.
    * ha minden egyes lapletöltésnél eljátszod ezt azzal pár dolgot fogsz elérni:
    - az ahonnan az xml-t húzod beléd rug.
    - ahol feldolgozod ott pedig kirugnak, mert széteszed a szerver erőforrásait
    - iszonyatosan lassú lessz a lapod.



  10. #10
    Törzsvendég
    Csatlakozott
    09-01-29
    Hozzászólás
    124
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: XML & preg_match_all()

    Idézet TLoF eredeti hozzászólása Hozzászólás megtekintése
    Ha nekem kellene ilyennel foglalkozni akkor nagyjából igy kezdenék hozzá:
    * letölteni az adat file-t.
    * kicsomagoni a tar.gz -ét.
    * az xml-t feldolgozni valamilyen formában az igy nyert adat tömböt serializáni, és kapott végeredményt elmenteni.
    * A bejövő lap kéréseket a serializált adatból kiszolgálni. A serializáció / deserializáció nagyság rendekkel gyorsabb mint az xml parsolás.
    * ha minden egyes lapletöltésnél eljátszod ezt azzal pár dolgot fogsz elérni:
    - az ahonnan az xml-t húzod beléd rug.
    - ahol feldolgozod ott pedig kirugnak, mert széteszed a szerver erőforrásait
    - iszonyatosan lassú lessz a lapod.
    Nincs széndékomban minden lapletöltésnél ezt eljátszani. Ez egy webbolthoz készül, ahol speciális összetételű XML fájlokra van szükség az árkeresőkhöz, de az adatbázishoz nincs hozzáférési jogosultság, csak ehhez az XML-hez.



Oldal: 1 / 2 12 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •