Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 13. 4. 2013, 20:26:41
Dobrý den, je možné pomocí regulárního výrazu získat data z následujícího řetězce?
"bar: * qux: fiz foo: bar, baz" Výsledek: bar: * qux: fiz foo: bar, baz |
||
Alphard Profil |
#2 · Zasláno: 13. 4. 2013, 20:46:13
To vaše nahrazení
bar, qux... rozbilo pochopitelnou strukturu. Jsou bar, qux, foo konstantní? Pokud ano, bylo by to snadné.
Pokud ne, chytil bych se dvojteček, ale zase je otázka, jestli se mohou objevit i v řetězci samotném. |
||
Tori Profil |
Pokud dvojtečky nemůžou být uvnitř hodnot, funguje např. tohle. Ale nelíbí se mi to, mělo by to jít napsat pěkněji.
$string = "bar: * qux: fiz prazdnyKlic: foo: bar, baz"; $re = '~(\w+):((?:\s[\w*]+,?)*)(?![:\w])~'; preg_match_all($re, $string, $m, PREG_SET_ORDER); var_dump($m); edit: Další možnost je převést to na nějaký std. formát, např. JSON: $string = "bar: * qux: fiz prazdnyKlic: foo: bar, baz"; $string = '{'.trim(preg_replace('~(\w+):\s*(.*?)\s*(?=\w+:|$)~', '"$1": "$2",', $string), ', ').'}'; var_dump(json_decode($string)); |
||
Časová prodleva: 11 let
|
0