Gå til innhold

[Løst] Problemer med variabel i preg_replace


Anbefalte innlegg

Skrevet

$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?

 

 

 

Videoannonse
Annonse
Skrevet (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 av molty
Skrevet

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"

Skrevet (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 av Cemi
Skrevet (endret)

Er ikke totalt kjent med preg_replace liksom

Bare totalt ukjent med php. Liksom.

 

[..]

Har du forsøkt å kjøre den koden?

Endret av Jonas
Skrevet (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 av YaNkEs
Skrevet

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;
?>

Skrevet (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 av FraXinuS
Skrevet

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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...