Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Da li sam dobro pretvorio preg_replace /e u preg_replace_callback?

PHP
  • 4 odgovora
  • 3.268 pregleda

Najnovija ↓

Da li sam dobro pretvorio preg_replace /e u preg_replace_callback? 22.09.2016. u 14:13 · pre 123 meseca #1
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.
Potpis
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback? 24.09.2016. u 15:12 · pre 123 meseca #2
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]
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback? 26.09.2016. u 15:38 · pre 123 meseca
izmenjeno 1 put, poslednji put MilosDj 27.09.2016. u 14:58
  1. MilosDj27.09.2016. u 14:58zapis iz teksta poruke
#4
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.
Potpis
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
Re: Da li sam dobro pretvorio preg_replace /e u preg_replace_callback? 29.09.2016. u 13:36 · pre 123 meseca #5
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 :D

Ne lep bug, al mozda nekom prekrati muke ako naleti na slicno.
Potpis
I'm not in this world to live up to your expectations and you're not in this world to live up to mine.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme