Gå til innhold

reg.exp.: Endre {constant} til defined constant


Anbefalte innlegg

DEFINE('NAME','Thomas');

 

$text = "Denne gutten heter {NAME}. Han er 12 år.";

 

Beklager at jeg ikke kan komme med noe godt forslag selv, for dette er vrient. Resultatet jeg er ute etter er selvfølgelig at $text = "Denne gutten heter Thomas ...osv";

MEN det er ikke aktuelt å bruke vanlige variabler eller "...heter ".NAME.". Han er...". Jeg vil at det skal gjøres via regular expression, etter som $text er en input fra bruker :-)

Lenke til kommentar
Videoannonse
Annonse

Altså noe slikt som

 

$text = preg_replace("/\{(.*?)\}/", $1, $text);

 

Mulig du må bruke eval inni der slik at det blir ..., eval($1), ... eller ..., eval("$1"), ...

 

Edit: Jeg ville kanskje satset på den siste. Prøv

Endret av balletryne
Lenke til kommentar

Det er en sikkerhetsrisiko med det scriptet. Med et slikt script gir du brukeren mulighet til å fritt kjøre selvvalgt kode.

 

Tror du burde bytte ut regexp-et med

 

"/\{[A-Z]*?\}/"

 

Dermed begrenser du inputen til _kun_ store bokstaver, ingen andre tegn. Hvis du har mulighet til å sjekke inputen mot en forhåndsdefinert liste over lovlig input er det å foretrekke.

 

Edit: Krøkkete formulering

Endret av balletryne
Lenke til kommentar

Antar at kun store bokstaver som angir en defined variabel burde kunne holde. Det kommer litt an på hva som er definert. Finnes mye definert i php-biblioteket.

 

Edit: Stavefeil. Jeg vet ikke om jeg selv ville stolt på at det holder. Det kommer litt an på hvordan nettsiden og koden er designet. Noen andre som har en formening?

Endret av balletryne
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...