Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?

[es] :: PHP :: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?

[ Pregleda: 2165 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.computerland.rs.



+4 Profil

icon Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?22.09.2016. u 13:13 - pre 91 meseci
Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?
Code:

    $old = preg_replace('/{([^}]+)}/e', "isset(\$tpl_array['\\1']) ? \$tpl_array['\$1']: stripslashes('{\$1}');",$template);

    $new = preg_replace_callback("/{([^}]+)}/", function($m) use($tpl_array) {return isset($tpl_array[$m[1]]) ? $tpl_array[$m[1]] : $m[1];},$template);

stripslashes je bio potreban jer /e ima auto addslashes.
\ je trebao ispred $ zbog "" stringa.
use() je za externu varijablu.

Ali sta znaci $1 u $tpl_array['\$1'] ???

Ja sam ga zamenio sa $m[1] i to kao radi. Tj sve radi al se pojavljuju neki cudni viskovi na sajtu. Pa ne znam da li sam se ovde zeznuo ili engine sad lepo radi a greska je negde u templejtu ili na desetom mestu.

I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?24.09.2016. u 14:12 - pre 91 meseci
Deluje OK. Najbolje je da negde istestiraš samo tu funkciju i tako ćeš znati da li radi kako treba.

$1 je prvi match u stringu nad kojim radiš regex matching. Sa callback funkcijom to bi trebalo da bude $m[1]
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.computerland.rs.



+4 Profil

icon Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?26.09.2016. u 13:35 - pre 91 meseci
Ok, ali koja je onda razlika izmedju \1 i $1?
Ima li uopste razlike?
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.computerland.rs.



+4 Profil

icon Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?26.09.2016. u 14:38 - pre 91 meseci
Ako nekom zatreba
Code:

"\\1" === '\1' === $m[1]

"\${1}" === '${1}' === $m[1]


Zezanje sa ${} je u slucaju ako ide broj odma iza zamene. \11 postaje ${1}1

Sto znaci da prethodno {$1} ima drugi smisao:

Code:

return isset($tpl_array[$m[1]]) ? $tpl_array[$m[1]] : '{'.$m[1].'}' : '');


Sad skoro sve radi.

[Ovu poruku je menjao MilosDj dana 27.09.2016. u 14:58 GMT+1]
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

MilosDj
Milos Djuric
Belgrade

Član broj: 14174
Poruke: 307
*.computerland.rs.



+4 Profil

icon Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?29.09.2016. u 12:36 - pre 91 meseci
Iz meni skroz nepoznatog razloga onaj preg_replace_callback je ubijao htaccess mod_rewrite AKO je url duzi od 1000 slova na PHP 5.4.

Tj radi na kratkim linkovina, a na duzim daje Internal server error 500. Server log je rekao "Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace."
Tuga. Veze nemam kako i zasto je to povezano.

Srecom uz malo zezanja i peglanja starih funkcija prvo sam poterao sajt na PHP 5.5 bez htaccess errora!!!
A onda i na 5.6 Em je brze, em ne baguje

Ne lep bug, al mozda nekom prekrati muke ako naleti na slicno.
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
 
Odgovor na temu

[es] :: PHP :: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?

[ Pregleda: 2165 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.