| 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 neexistujeisset($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: 10 let
|
|||
0