Autor | Zpráva | ||
---|---|---|---|
Chro Profil |
#1 · Zasláno: 21. 12. 2013, 17:28:38
Zdravím,
jaký postup byste zvolili ke 100% správnému zjištění oddělovače v CSV souboru (čárka, středník, tabulátor)? Je již na to nějaká nativní funkce (nenašel jsem) nebo bude na to třeba regulární výraz? Řešení pomocí např. substr_count se mi nezdá jako nejlepší. |
||
Amunak Profil |
#2 · Zasláno: 21. 12. 2013, 17:30:11
Chro:
100% správné zjištění asi může provést jen uživatel. Ale implicitně by cvs mělo být comma-separated. Pokud najdeš řetězec uzavřený do uvozovek, můžš se podívat, co po těch uvozovkách následuje za znak - to by měl být oddělovač. |
||
Chro Profil |
#3 · Zasláno: 21. 12. 2013, 17:41:07
Amunak:
Chápu. Takže po uvozovkách (pokud budou) zkontrolovat, zda vyhovuje jeden ze tří oddělovačů. Na to bude nejlepší regulár, bohužel, jak jsem se je chtěl naučit, totálně jsem se do nich zamotal a pořád z nich nejsem moudrý. Ty bys mi s ním nepomohl? Je advent. ;) |
||
Amunak Profil |
#4 · Zasláno: 21. 12. 2013, 18:14:40
Chro:
Musíš taky nějak kontrolovat, jestli nejde o konec souboru, protože pak by tam nebylo nic. Můžeš zkusit něco jako tohle: (?<!")"(?!").?*(?<!")"(?!") *(\t|,|;) Ty divný závorky jsou negativní lookbehind (resp. lookahead), který zjišťuje, jestli náhodou nejde o dvě uvozovky těsně za sebou - tím se totiž uvozovka escapuje. Snad to mám dobře. Když to proženeš do preg_match, ve třetím parametru $matches[1] bys snad měl mít ten znak (kdyžtak si vypiš $matches, kdybys to nemohl najít, možná je to na jiném indexu), pokud to hledání neselže.
|
||
Chro Profil |
#5 · Zasláno: 21. 12. 2013, 18:18:08
Amunak:
Ok, vyzkouším. Děkuju! |
||
Časová prodleva: 10 let
|
0