| Autor | Zpráva | ||
|---|---|---|---|
| Honza.P@ Profil |
#1 · Zasláno: 26. 2. 2012, 15:35:46
Mám funkci, která mi nahrazuje určité části pomocí jiných (funguje to nějak jako bbcode)
$clanek = "Neco nekde [nk]Petr[/nk] bude."
$text[0] = "/\[nk\](.*?)\[\/nk\]/is";
$nahrad[0] = self::getEmail("$1");
return preg_replace($text, $nahrad, $clanek);Problém je v tom, že $1 se funkci self::getEmail("$1") předá jen jako text $1 a né jeho obsah, tedy Petr. Nevíte, jak toto vyřešit? Děkuji :) |
||
| Radek9 Profil |
#2 · Zasláno: 26. 2. 2012, 15:40:08
Honza.P@:
A nemá to být spíš nějak takto? $clanek = "Neco nekde [nk]Petr[/nk] bude." $text[0] = "/\[nk\](.*?)\[\/nk\]/is"; $nahrad[0] = "$1"; return self::getEmail(preg_replace($text, $nahrad, $clanek)); |
||
| Honza.P@ Profil |
Radek9:
Nn, protože těch nahrazení může být víc ($text i $nahrad josu array()); Pokud přidám: $text[1] = [el]neco@neco.cz[/el]
$nahrad[1] = self::getNick("$1"); |
||
| Radek9 Profil |
Honza.P@:
No, to sice jo, ale tak si holt musíš udělat nějaký třetí pole, kam se bude ukládat třeba název metody a pak to switchem rozdělíš. Tohle z logickýho hlediska nemůže fungovat, protože tý metodě odpravdu předáváš "$1". Edit: Teď mě napadá, pokud přidáš flag e, tak by to mohlo jít takhle:
$text[0] = "/\[nk\](.*?)\[\/nk\]/ise";
$nahrad[0] = "self::getEmail('$1')"; |
||
| Honza.P@ Profil |
#5 · Zasláno: 26. 2. 2012, 16:28:28
[#4] Radek9: Díky moc. Funguje to :)
Mohl bych tě poprosit, zda by si neměl odkaz, kde jsou ty "flagy" vysvětlené? Např to e vůbec neznám. Díky :) |
||
| Radek9 Profil |
#6 · Zasláno: 26. 2. 2012, 17:17:25
Honza.P@:
Jmenuje se to vlastně modifiers (nevím, jestli je flag špatně, ale já to používám). Zrovna to e značí povolení evalu, tedy, že všechen kód v tom stringu se provede. Můžeš se o nich dočíst tady. |
||
|
Časová prodleva: 14 let
|
|||
0