Yankes Skrevet 6. februar 2011 Del Skrevet 6. februar 2011 $output = preg_replace("/V(.*?)\%/", "\$var[$1]", $get); print $output; Det fungerer nesten som det skal, bortsett fra at den skriver ut navnet på variabelen og ikke innholdet Eks: $get = "Something something V1%"; $var[1] = "darkside"; $output = preg_replace("/V(.*?)\%/", "\$var[$1]", $get); print $output; Den skriver da ut "Something something $var[1]", istedet for "Something something darkside". Jeg har prøvd masse rart, men det her er det nærmeste jeg har kommet.. Noen som har noen forslag? Lenke til kommentar
molty Skrevet 6. februar 2011 Del Skrevet 6. februar 2011 (endret) preg_replace("/V(.*?)\%/", $var[1], $get); enklere blir det ikke EDIT: Altså endre "\$var[1]" om til bare $var[1] For koden tror du vil at den skal erstattes med $var[1] og ikke $var[1] som i darkside Endret 6. februar 2011 av molty Lenke til kommentar
Yankes Skrevet 6. februar 2011 Forfatter Del Skrevet 6. februar 2011 Nei, da skriver den kun ut den første variablen hele tiden, altså $var[1] $get = "Something something V1% V2% V3%"; $var[1] = "darkside"; $var[2] = "and"; $var[3] = "spooky"; $output = preg_replace("/V(.*?)\%/", $var[1], $get); print $output; Det blir "Something something darkside darkside darkside", istedet for "Something something darkside and spooky" Lenke til kommentar
Cemi Skrevet 6. februar 2011 Del Skrevet 6. februar 2011 (endret) Jeg ville tro det er fordi du har "Replacement" argumentet satt til et bestemt element i en array, og ikke en array. The string or an array with strings to replace. If this parameter is a string and the pattern parameter is an array, all patterns will be replaced by that string. If both pattern and replacement parameters are arrays, each pattern will be replaced by the replacement counterpart. If there are fewer elements in the replacement array than in the pattern array, any extra patterns will be replaced by an empty string. Se på eksempel 2 her: http://php.net/manual/en/function.preg-replace.php $get = "Something something V1% V2% V3%"; $var = array(); $var[1] = "darkside"; $var[2] = "and"; $var[3] = "spooky"; $output = preg_replace("/V(.*?)\%/", $var, $get); print $output; Endret 6. februar 2011 av Cemi Lenke til kommentar
molty Skrevet 6. februar 2011 Del Skrevet 6. februar 2011 Åjaaa Sånn du skal lage ja Prøv å bruk $var[."\\1".] Er ikke totalt kjent med preg_replace liksom Lenke til kommentar
Jonas Skrevet 6. februar 2011 Del Skrevet 6. februar 2011 (endret) Er ikke totalt kjent med preg_replace liksom Bare totalt ukjent med php. Liksom. [..] Har du forsøkt å kjøre den koden? Endret 6. februar 2011 av Jonas Lenke til kommentar
Yankes Skrevet 6. februar 2011 Forfatter Del Skrevet 6. februar 2011 (endret) Cemi, det har jeg prøvd allerede.. Warning: preg_replace() [function.preg-replace]: Parameter mismatch, pattern is a string while replacement is an array Endret 6. februar 2011 av YaNkEs Lenke til kommentar
Jonas Skrevet 6. februar 2011 Del Skrevet 6. februar 2011 Dere bruker preg_replace til noe man ikke skal bruke den til. <?php $get = "Something something V1%"; $var[1] = "darkside"; preg_match_all("/V(.*?)\%/", $get, $matches); for($i = 0, $iMax = count($matches[0]); $i < $iMax; $i++) $get = str_replace($matches[0][$i], $var[$matches[1][$i]], $get); echo $get; ?> Lenke til kommentar
FraXinuS Skrevet 7. februar 2011 Del Skrevet 7. februar 2011 (endret) $get = "Something something V1% V2% V3%"; $var = array(); $var[1] = "darkside"; $var[2] = "and"; $var[3] = "spooky"; $output = preg_replace_callback("/V(.*?)\%/", function ($m) use($var) {return $var[$m[1]];}, $get); print $output; Dette funker i php 5.3, hvis du ikke bruker php 5.3 må du bruke en vanlig funksjon eller create_function() Endret 7. februar 2011 av FraXinuS Lenke til kommentar
Yankes Skrevet 7. februar 2011 Forfatter Del Skrevet 7. februar 2011 Takker Jonas, det fungerte utmerket. Jeg var inne på preg_match, men fikk det ikke til å fungere og ble blind på preg_replace siden jeg var så "nære" ved å få det til. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå