Gå til innhold

[Løst] Problemer med variabel i preg_replace


Anbefalte innlegg

$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
Videoannonse
Annonse

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 av molty
Lenke til kommentar

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

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 av Cemi
Lenke til kommentar

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

$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 av FraXinuS
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...