| Autor | Zpráva | ||
|---|---|---|---|
| sedgar Profil * |
#1 · Zasláno: 4. 6. 2008, 10:11:41
Dobry den,
mam nasledujuci problem: pomocou php chcem exportovat obsah mysql tabulky do textoveho suboru (nasledne importovat do excelu) v mysql databaze mam stlpec "popis zadania", ktory obsahuje lubovolny text zadany uzivatelom - su v nom bezne pouzivane aj znaky ktore sluzia ako oddelovac, ako oddelovac som zvolil tabulator - potrebujem teda nahradit/odstranit vsetky tabulatory a tu je problem... zatial som skusal funkcie, vsetko neuspesne: - chop($riadok1["zad_popis_riesenia"]); - str_replace($fir2, $sec2, $riadok1["zad_popis_riesenia"]); - str_ireplace($fir2, $sec2, $riadok1["zad_popis_riesenia"]); - ereg_replace - eregi_replace Dik. |
||
| Kcko Profil |
#2 · Zasláno: 4. 6. 2008, 10:31:13 · Upravil/a: Kcko
preg_replace("~\s+~Usi", "",$place);
|
||
| sedgar Profil * |
#3 · Zasláno: 4. 6. 2008, 10:53:25
DIK!
IDE :-D mohol by si pls kratky popis co to robi? jj tomu ze v retazci v premennej $place nahradi "~\s+~Usi" za "" rozumiem (teda aspon myslim ze rozumiem), ale... to predsa robia aj funkcie ktore som pouzil ja, alebo nie?, a co je vlastne toto? "~\s+~Usi" |
||
| Joker Profil |
#4 · Zasláno: 4. 6. 2008, 11:12:27 · Upravil/a: Joker
sedgar
a co je vlastne toto? "~\s+~Usi" Regulární výraz. Znamená to "Jeden nebo víc bílých znaků", s modifikátory U (ten nevím co dělá), s (celý řetězec porovnává najednou, bez něj se porovnává po řádcích), i (bez ohledu na velikost písmen) |
||
| lordfrikk Profil |
#5 · Zasláno: 4. 6. 2008, 13:49:52 · Upravil/a: lordfrikk
Regulární výrazy (v tom případě konkrétně PCRE (Perl-compatible Regular Expressions)) se zapisují takto:
ODDĚLOVAČvýrazODDĚLOVAČmodifikátory V tomto případě je jako oddělovač použita tilda (~). Takže mám ~výraz~. Dále - \s označuj skupinu znaků, v tomto případě jakýkoli bílý znak (vertiální i horizontální). Dále + je tzv. kvantifikátor, který říká, že znak předtím se očekává minimálně 1x, seshora není nijak omezen. Dále v uvedeném výrazu jsou až za oddělovači modifikátory, s a i jsou vysvětleny Jokerem, U (PCRE_UNGREEDY) znamená, že kvantifikátory nejsou "hladové"... nebudu to dále rozepisovat, protože pro pochopení "hladovosti" je třeba o regulárech něco vědět. |
||
| nightfish Profil |
#6 · Zasláno: 4. 6. 2008, 14:14:27
vzhledem k použitému RV není potřeba modifikátory používat ((un)greedy nás nezajímá, protože to nahradí postupně všechny a case sensitive nás také nezajímá, protože mezery nejsou "velké" a "malé" a s ovlivňuje pouze vyhodnocování metaznaku tečka, který nepoužíváme)
takže preg_replace("~\s+~", "", $place);jinak k tomu U (a hladovosti) - RV standardně vybere nejdelší odpovídající část tzn. mějme např. řetězec aaabbbbbca RV b+ vybere čtyři po sobě následující znaky "b" když přidáme modifikátor U, tak se vybere nejkratší shoda, což by u výše uvedeného řetězce/RV znamenalo jeden znak "b" k čemu je to dobré? např. chcete vybrat z HTML textu nějakou konkrétní část mějme kód: <div>prispevek 1</div><div>prispevek 2</div> když použijeme RV <div>(.*)</div>, tak nám standardně vybere celý vnitřek mezi prvním <div> a posledním </div>, což obvykle nechceme při použití modifikátoru U se nám vybere jen odpovídající text mezi prvním <div> a nejbližším </div> |
||
| lordfrikk Profil |
#7 · Zasláno: 4. 6. 2008, 14:16:39
^ Nebo se nám vybere vnořený div ;)
|
||
|
Časová prodleva: 17 let
|
|||
0