Autor Zpráva
Chro
Profil
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
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
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
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
Amunak:
Ok, vyzkouším. Děkuju!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: