Autor | Zpráva | ||
---|---|---|---|
Fury Profil * |
#1 · Zasláno: 8. 8. 2016, 15:41:27
Zdravím,
potřeboval bych poradit, jak nejlépe dosáhnout odstranění části stringu. Mám např. tyto záznamy: textový záznam bla "A" (1) textový záznam csa "B" (12) textový záznam "C" (23) textový záznam (15) A já bych potřeboval nasměrovat jak odstranit závorku (i to co je v ní) a zároveň odstranit to, co je v uvozovkách (ideálně to spíš např. jen splitnout, abych ten záznam, co je ještě v uvozovkách, mohl použít). Díky moc! |
||
pcmanik Profil |
Fury:
Čiže chceš z 'textový záznam bla "A" (1)' ziskať dva údaje a to 'textový záznam bla' a 'A' rozumiem tomu správne? Pričom ten druhý údaj (v úvodzovkách) je voliteľný, teda že záznam ho nemusí obsahovať ano? |
||
Fury Profil * |
#3 · Zasláno: 8. 8. 2016, 18:48:00
pcmanik:
Přesně tak. |
||
juriad Profil |
#4 · Zasláno: 8. 8. 2016, 19:07:44
preg_match('/^(.*?)\s*(?:"(.*)")?\s*(?:\((.*)\))?$/', $text, $zaznam); $zaznam[1] = textový záznam $zaznam[2] = to co je v uvozovkách nebo neexistuje $zaznam[3] = to co je v závorkách nebo neexistuje isset($zaznam[2]) .
Ukázka online: regex101.com/r/pB4xU0/2 (toho mg si nevšímej, to je tam jen proto, aby se zpracovaly všechny řádky najednou). |
||
Časová prodleva: 3 dny
|
|||
Fury Profil * |
#5 · Zasláno: 11. 8. 2016, 21:21:43
juriad:
Super, to je přesně ono. Díky moc! Každopádně jsem tam narazil na jeden problém, např. pokud mám ten string v uvozovkách, tzn. např: "SPORTOVNÍ ZÁZNAM" (1) Dá se i toto ošetřit? Díky! |
||
juriad Profil |
To bych řešil až v PHP:
if (!isset($zaznam[1]) && isset($zaznam[2])) { $zaznam[1] = $zaznam[2]; unset $zaznam[2]; } A ten regex bych trošku upravil: '/^([^()"]+?)??\s*(?:"(.*)")?\s*(?:\((.*)\))?$/' |
||
Časová prodleva: 7 let
|
0