Ik ben op zoek naar een code om achteraf een string in een string toe te passen. Dit wil ik gebruiken in om een site multi-talig te maken.

$vertaling = "bla bla bla bla $naam $bla bla bla bla";
$naam = "jan";

werkt natuurlijk niet omdat de naam achteraf gezet wordt.

Daarnaast heb ik momenteel mijn vertalingen in een database opgeslagen.

ik ben op zoek naar een oplossing om de in te vullen string achteraf in te kunnen vullen. Ik kan natuurlijk wel gaan zoeken en vervangen, maar is er geen schonere oplossing om dat te doen?
[php]str_replace[/php]().

Edit:
<?php
$vertaling = "bla bla bla bla [[naam]] bla bla bla bla";
$naam = "jan";
echo str_replace('[[naam]]', $naam, $vertaling);
?>
Of een functie:

function bla($string)
{
echo 'het woord, '.$string.' is het woord';
}

echo bla('hoi');
PHP Newbie schreef op 08.02.2009 18:45
Of een functie:

function bla($string)
{
echo 'het woord, '.$string.' is het woord';
}

echo bla('hoi');

Een site multilang. maken door een functie met een vaste string d'r in :-/ pffft... Gebruik dan [php]sprintf[/php] (sowieso een handige functie).
Of als het heel veel is met preg. En anders een of ander template. Met xml kan je ook leuke dingen doen.
Hij stelt een vraag:

Andre schreef op 08.02.2009 18:06
Ik ben op zoek naar een code om achteraf een string in een string toe te passen.


Ik geef een antwoord. Misschien niet het antwoord wat hij direct kan gebruiken, maar anderen kunnen hier wel van leren.

sprintf is ook geen oplossing, aangezien dat ook niet achteraf kan.
PHP Newbie schreef op 08.02.2009 18:58
Hij stelt een vraag:

[quote='Andre schreef op 08.02.2009 18:06']Ik ben op zoek naar een code om achteraf een string in een string toe te passen.


Ik geef een antwoord. Misschien niet het antwoord wat hij direct kan gebruiken, maar anderen kunnen hier wel van leren.

sprintf is ook geen oplossing, aangezien dat ook niet achteraf kan.[/quote]
Sprintf is niet mijn enige oplossing. (En zijn vraag was nog niet ten einde, aangezien hij zijn doel ook nog opgaf.)
Regex'en of xml kan ook. En als ie heel goor wilt gaan doen moet gaat ie toch lekker vars binnen quote's zetten...
Verder zie ik niet in waarom sprintf niet kan, want je kunt gewoon een soort van template maken.
Smarty werkt ook op zo'n bepaalde manier, die maakt veredelde php code en waar dan dingen in vervangen wordt.
sprintf is een mogelijke oplossing, maar niet ideaal omdat de invoegvolgorde vast ligt, en die kan afwijken in andere talen.

Het komt er dus op neer dat zoeken en vervangen de enige oplossing is?
Ik raad toch ook sprintf aan. Je kan in de placeholders aangeven welke volgorde ze de variabelen moeten opvragen, en de type-aanduiding die je moet geven bied je een heel klein beetje extra veiligheid. Volgens mij is het best een veelgebruikte oplossingen bij vertalingen.

<?php
printf('%2$s of %1$s', 'a', 'b');
?>

Reageren