PHP - Použitie funkcie split() v cykle

Programovacie jazyky, rady, poradňa...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

PHP - Použitie funkcie split() v cykle

Príspevok od používateľa weroro »

Ahojte,

snažím sa v PHP vyparsovať text oddelený || a ' kde pri použití funkcie split v cykle for, ktorým prechádzam pole $PoleSprav mi vyhadzuje chybu
Warning: split() [function.split]: REG_EMPTY in C:\Program Files\VertrigoServ\www\history.php on line 8

Kód: Vybrať všetko

<?php
echo "<html>\n<head>\n<title>spravy</title>\n</head>\n<body>\n";
$TextNaPars = "nick1||nick2||sprava1 :)'nick1||nick2||sprava2'nick1||nick2||sprava3 :)'nick1||nick2||sprava4'";
$PoleSprav = split ("'", $TextNaPars);
$PocetSprav = count($PoleSprav) - 1;
for ($n = 0; $n < $PocetSprav; $n++) {
        if ($PoleSprav[$n]) {
        $weroro = split("||", $PoleSprav[$n]);
            echo "$weroro[2]\n";
        }else{
            exit;
        }
    }
    echo "\n</body>\n</html>\n";
?>
Viete mi prosím poradiť, prečo mi to hádže tú chybu? Alebo sa v PHP nedá použiť v cykle funkcia split()?

Ďakujem

//autoeditácia príspevku (12 Dec 2010, 07:36)
No, takže som na to krvopotne prišiel systémom pokus omyl. Vo funkcii split musí byť oddeľovací znak v hranatých zátvorkách.

Kód: Vybrať všetko

$weroro = split("[||]", $PoleSprav[$n]); 
mohol by mi, ale niekto vysvetliť prečo tam tie zátvorky musia byť? Lebo to vidím prvý krát v živote a skúsil som ich tam dať naozaj iba zo srandy, o čo viac som bol prekvapený keď to zabralo.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP - Použitie funkcie split() v cykle

Príspevok od používateľa audiotrack »

už som ti v jednej téme písal, že split je zastaralé a nemá sa používať. Máš šťastie v nešťastí že máš staré php a nehádže ti chybu. Napríklad ja tvoj kod ani nespustím, dostanem iba plno chýb. Ale k vysvetleniu toho čo sa pýtaš:
split berie ako parameter oddelovača nie reťazec, ale regulárny výraz. V regulárnych výrazoch majú pipy ( zvyslé čiary | ) aj hranaté zátvorky svoj význam, je na dlho to vysvetlovať pokiaľ im nerozumieš ale mne to logiku dáva. Na tvojom mieste by som skúsil použiť str_split() ktorý berie ako oddelovač reťazec
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PHP - Použitie funkcie split() v cykle

Príspevok od používateľa weroro »

Nuž, ja viem, že si mi to písal, ale aj keď som si pozrel špecifikáciu funkcie str_split na php.net nebolo mi to tak celkom jasné. Pochopil som to tak, že ako prvý parameter sa udáva string, ktorý chcem predeľovať a ako druhý parameter je pozícia, na ktorej ho chcem predeliť. str_split("php je divne", 5); rozdelí vetu "php je divne" v piatom znaku, čiže v poly bude ["php j", "e divne"]. Toto mi, ale príde zbytočné, lebo budem musieť najprv v tom Stringu zistiť pozície "oddeľovača" tie uložiť do poľa a potom to celé str_splitnúť pomocou for in alebo for. Nie je split jednoduchší ako str_split?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP - Použitie funkcie split() v cykle

Príspevok od používateľa audiotrack »

myslel som explode(), ono sa to niekedy pletie z iných jazykov :psssst:
asi začnem viac háčkovať namiesto programovania
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PHP - Použitie funkcie split() v cykle

Príspevok od používateľa weroro »

jj presne mi to prišlo trosku divné (nebol som si však 100% istý), ale keď si napísal str_split, tak som šiel po str_split no :D V poslednej dobe si dáky nesvoj :) V každom prípade ďakujem už to funguje, tak ako má.

//autoeditácia príspevku (15 Dec 2010, 22:13)
Mám ďalšiu zvláštnu požiadavku ohľadne explode(). Ako pomocou neho rozdelím slovo na samostatné znaky?
Mám taký blbý zvyk z ActionScriptu to robiť takto:

Kód: Vybrať všetko

var premenna:String = "weroro";
var pole:Array = split("", premenna);
trace(pole); // w,e,r,o,r,o   
Ako oddelovač zadám prázdnu hodnotu, lenže v PHP to asi takto nepôjde, lebo ani pomocou split() sa mi to v ňom nepodarilo. Je na to dáka "finta" alebo to musím robiť pomocou substr();?

Ďakujem
lama2d
VIP
VIP
Príspevky: 1006
Registrovaný: 24 feb 2005, 14:54
Bydlisko: PostgreSQL

Re: PHP - Použitie funkcie split() v cykle

Príspevok od používateľa lama2d »

Pomocou explode nerozdelíš, ale tentokrát môžeš naozaj použiť str_split :D .

Kód: Vybrať všetko

str_split($slovo)
alebo ešte môžeš použiť toto:

Kód: Vybrať všetko

preg_split('//', $slovo, -1, PREG_SPLIT_NO_EMPTY)
Neviem ti však povedať, čo je rýchlejšie, to bude vedieť audiotrack.
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: PHP - Použitie funkcie split() v cykle

Príspevok od používateľa weroro »

Parádička ďakujem :)
Napísať odpoveď