Autor | Zpráva | ||
---|---|---|---|
pexxxik Profil |
#1 · Zasláno: 7. 2. 2011, 16:47:41
Dobrý den,
mám takovýto kód <?php $x = "name='pexxxik'parametr2='hodnota2'"; echo ereg_replace("name='(.+?)'", "\\1", $x); ?> Jde o to, v textovém řetězci mám atributy a k němu hodnoty, a potřebuje je dostat do proměnných. Tento výstup však vrací: pexxxik'parametr2='hodnota2. Jenže já potřebuji aby vracel jen: pexxxik. Nevíte kde je chyba? |
||
Radek9 Profil |
#2 · Zasláno: 7. 2. 2011, 17:13:43
Ereg funkce jsou zastaralé, použij preg (už se to tu konec konců dnes jednou psalo).
Zkus to takhle: <?php $x = "name='pexxxik'parametr2='hodnota2'"; preg_match_all("/(.*)\=\'(.*)\'/U", $x, $y); print_r($y); ?> |
||
pexxxik Profil |
#3 · Zasláno: 7. 2. 2011, 17:50:06
Jj, to asi jo, ale myslím, že funkce ereg*() jsou mnohem rychlejší, ne? Také než budou na servery nainstalovány PHP verze 5.3 a vyšší, tak to bude ještě chvíli trvat...
No takhle mi to úplně nevyhovuje, protože kdyby se přeházeli hodnoty s atributy (nebo se nějaká vynechala), tak by se změnili čísla u hodnot a toho nechci docílit. Ale jinak děkuji za návrh, posunul mě v řešení zas o kus dál. Nevíte někdo proč ereg_replace dělá takovou chybu? Jestli to tedy chyba je? |
||
Radek9 Profil |
#4 · Zasláno: 7. 2. 2011, 18:00:08
pexxxik:
„Také než budou na servery nainstalovány PHP verze 5.3 a vyšší, tak to bude ještě chvíli trvat…“ Toho bych se nebál. Na free serverech se to děje celkem rychle a na placených je to samozřejmost. „protože kdyby se přeházeli hodnoty s atributy“ Proto jsem psal, aby sis to přeházel. Třeba takhle: $z = array(); for($i=0;$i<count($y[0]);$i++){ $z[$y[1][$i]] = $y[2][$i]; } |
||
Tori Profil |
#5 · Zasláno: 7. 2. 2011, 18:58:48
pexxxik:
Jestli nutně chcete ereg_replace, tak třeba takhle: ereg_replace("name='([^']+)?'(.)+", "\\1", $x); |
||
Časová prodleva: 13 let
|
0