Autor | Zpráva | ||
---|---|---|---|
Atxl Profil * |
#1 · Zasláno: 31. 12. 2005, 19:39:33
preg_replace($pattern, $promenna["\\1"], $zdroj);
...jak mám zapsat $promenna["\\1"]? takhle to nefunguje (funguje když tam dám samotné \\1 nebo samotné $promenna['hodnota'], ale dohromady?) a už jsem zkoušel i jinak, ale vše buď skončí s parseerror nebo nefunguje :( prosím poraďte... už si nevím rady... |
||
llook Profil |
#2 · Zasláno: 1. 1. 2006, 00:54:14
Jedině snad nějak s modifikátorem e.
$promenna = array('a' => 'b'); preg_replace('/a/e', '$promenna["\\1"]', 'aaaa'); |
||
Atxl Profil * |
#3 · Zasláno: 1. 1. 2006, 09:35:10
a proc to nejde takto? co na tom je spatne...?
|
||
Atxl Profil * |
#4 · Zasláno: 1. 1. 2006, 09:40:47
s modifikátorem e mi to také nějak nefuguje :(
|
||
llook Profil |
#5 · Zasláno: 1. 1. 2006, 11:31:08
Zkus si představit, jak asi postupuje PHP.
- Zavoláš funkci. - Nejdřív se zjistí hodnoty všech argumentů. - Potom se zavolá funkce a zjištěné hodnoty se jí předaj. Funkce teda neví, jak argument vypadal. Ví jenom, že má hodnotu NULL. Zatímco v mém případě je hodnota argumentu řetězec '$promenna["\\1"]'. Funkce preg_replace si v řetězci nejdřív nahradí odkazy na subvýrazy (\\1) a pak díky modifikátoru e řetězec vyhodnotí jako PHP výraz. |
||
halogan Profil |
#6 · Zasláno: 1. 1. 2006, 13:16:35
Melo by to fungovat takto:
Ale jaski to vraci "bbbbaaaa" |
||
Atxl Profil * |
#7 · Zasláno: 2. 1. 2006, 07:37:42
hmm a halogane neslo by to takhle nejak aby to jaksi vracelo jen bbbb? ps: proc uz mi mesic neodpovidas na icq?
|
||
Hugo Profil |
#8 · Zasláno: 2. 1. 2006, 07:55:33 · Upravil/a: Hugo
$promenna = array('a' => 'b');
$str = "aaaa"; preg_replace('/(a)/e', 'print $promenna["\\1"]', $str); print $str; // TOTO TISKNE TO aaaa Takže takto to funguje $promenna = array('a' => 'b'); $str = "aaaa"; preg_replace('/(a)/e', 'print $promenna["\\1"]', $str); |
||
Atxl Profil * |
#9 · Zasláno: 2. 1. 2006, 10:44:35
mno jo jenze ja stejne potrebuju aby funkce preg_replace predala hodnotu bbbb a ne 'print $promenna["neco"]' :(
|
||
Hugo Profil |
#10 · Zasláno: 2. 1. 2006, 10:47:01
$promenna = array('a' => 'b');
$str = "aaaa"; $newStr = preg_replace('/(a)/e', '$promenna["\\1"]', $str); |
||
Atxl Profil * |
#11 · Zasláno: 2. 1. 2006, 13:25:50
ok, já ale potřebuju aby $newStr = 'b' a né '$promenna["a"]' :(
|
||
halogan Profil |
#12 · Zasláno: 2. 1. 2006, 13:47:30
> hmm a halogane neslo by to takhle nejak aby to jaksi vracelo jen bbbb? ps: proc uz mi mesic neodpovidas na icq?
Jooo, to nevim, mne nic neprichazi. > ok, já ale potřebuju aby $newStr = 'b' a né '$promenna["a"]' :( Hugo: do newStr ti prijde true/false/-1, nikoliv vysledek |
||
hugo_jinde Profil * |
#13 · Zasláno: 2. 1. 2006, 14:07:06
halogan
Podle manualu by to melo fungovat. Ted to, ale nemam jak otestovat. preg_replace() returns an array if the subject parameter is an array, or a string otherwise. |
||
Atxl Profil * |
#14 · Zasláno: 2. 1. 2006, 14:34:52
>> ok, já ale potřebuju aby $newStr = 'b' a né '$promenna["a"]' :(
> Hugo: do newStr ti prijde true/false/-1, nikoliv vysledek halogane to je blbost...viz manuál: <?php $str = 'foo o'; $str = preg_replace('/\s\s+/', ' ', $str); // This will be 'foo o' now echo $str; ?> $newStr by tedy "měl" obsahovat 'bbbb' a ne true/false... |
||
halogan Profil |
#15 · Zasláno: 2. 1. 2006, 15:07:23
Atxl: Promin, spletl jsem si to s preg_match
|
||
Honza Široký Profil |
#16 · Zasláno: 2. 1. 2006, 17:23:37
Já bych to udělal takhle:
|
||
Atxl Profil * |
#17 · Zasláno: 2. 1. 2006, 17:47:33
ok takhle to mám taky řešený ;) ale myslel jsem že to jde jednodušeji... tak pokud nejde díky všem ;)
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0