Archief - PHP: ereg_replace

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Lemon

Legacy Member
PHP:
$bleh['appel'] = "groen";
$bleh['lucht'] = "blauw";
$bleh['bloed'] = "rood";
$string = "{appel} - {lucht} - {bloed}";

echo ereg_replace("{([a-zA-Z]*)}","\\1",$string);
//Dit geeft als output: appel - lucht - bloed

echo ereg_replace("{([a-zA-Z]*)}",$bleh["\\1"],$string);
//Dit geeft als output:  - - 

//probleem: de array neemt '\\1' als pointer ipv de waarde die aan \\1 hangt.
//Hoe kan ik dit oplossen zodat de waarde genomen wordt als pointer?

zero2one

Legacy Member
probeer eens preg-replace

er staan voorbeelden bij (arrays)

in uw geval wordt de code:
PHP:
$string = "{appel} - {lucht} - {bloed}";
$bleh = array(
   '{appel}' => 'groen',
   '{lucht}' => 'blauw',
   '{bloed}' => 'rood'
   );

echo preg_replace(array_keys($bleh), array_values($bleh), $string);

Lemon

Legacy Member
gaat nie werken hoe ik het wil.

in de template file komen er {template:var} te staan.

1 functie zoekt alle {template:*}'s in de tekst, en vervangt ze door hun bijhorende waarde. Die waarde komt uit een array met als keys de namen die op de * positie komen.

0n3Liner

Legacy Member
PHP:
<?php
$bleh['appel'] = "groen";
$bleh['lucht'] = "blauw";
$bleh['bloed'] = "rood";
$string = "{appel} - {lucht} - {bloed}";

echo preg_replace("#{([a-zA-Z]+?)}#ie","\$bleh['\\1']", $string);
?>

Lemon

Legacy Member
0n3Liner zei:
PHP:
<?php
$bleh['appel'] = "groen";
$bleh['lucht'] = "blauw";
$bleh['bloed'] = "rood";
$string = "{appel} - {lucht} - {bloed}";

echo preg_replace("#{([a-zA-Z]+?)}#ie","\$bleh['\\1']", $string);
?>

Nu zet ie er letterlijk: $bleh['appel'] - $bleh['lucht'] ...

zero2one

Legacy Member
0n3Liner zei:
PHP:
<?php
$bleh['appel'] = "groen";
$bleh['lucht'] = "blauw";
$bleh['bloed'] = "rood";
$string = "{appel} - {lucht} - {bloed}";

echo preg_replace("#{([a-zA-Z]+?)}#ie","\$bleh['\\1']", $string);
?>

werkt hier ook perfect
Code:
Content-type: text/html
X-Powered-By: PHP/4.3.10

groen - blauw - rood

Lemon

Legacy Member
Nu werkt het hier ook, ik had niet gezien dat je preg_replace gebruikte ipv ereg_replace.

Merci! nu kan verderdoen met het script.

killgore

Legacy Member
Lemon zei:
Nu werkt het hier ook, ik had niet gezien dat je preg_replace gebruikte ipv ereg_replace.

Merci! nu kan verderdoen met het script.
al die oplossingen da ik u gistere geg. heb werkten dus ook met preg e :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan