Variable in string einsetzen
m²
- php
hallo.
ich habe ein Problem mit folgender Ausgangssituation:
ich habe zwei strings:
$string="[name] ist dein Name.";
$name="Paul";
was herauskommen soll:
"Paul ist dein Name."
ich bin schon mit preg_replace am gange, heraus kommt da folgender string:
"$name ist dein Name."
aber das hilft mit leider auch nicht viel weiter...
wie kann ich es erreichen, dass der name Paul bei $name eingesetzt wird?
wichtig: das ganze muss dynamisch sein, das soll praktisch für jede variable funktionieren, z.b. "der [heute] ist ein schöner [tag_name]".
wenn mir irgendwie geholfen werden kann ;)
ich bitte darum :)
m²
PS: Guten Rutsch!
Hallo m².
ich habe zwei strings:
$string="[name] ist dein Name.";
$name="Paul";
wie kann ich es erreichen, dass der name Paul bei $name eingesetzt wird?
wichtig: das ganze muss dynamisch sein, das soll praktisch für jede variable funktionieren, z.b. "der [heute] ist ein schöner [tag_name]".
Meine Empfehlung: verwende ein Array.
Dort kannst du die Bezeichner selbst wählen, so z. B.:
$replacements = array (
'vname' => 'Max',
'name' => 'Mustermann'
);
Dann kannst du darauf ganz einfach mittels foreach-Schleife zugreifen und mittels str_replace (ein regulärer Ausdruck ist hier überflüssig und vergeudet nur Performance) deinen gewünschten String zugreifen:
$string = 'Hallo [vname] [name]!';
foreach ($replacements as $from => $to) {
$string = str_replace('['.$from.']', $to, $string);
}
echo $string;
Einen schönen Samstag noch.
Gruß, Ashura
hallo nochmal,
ich habe eine Lösung, falls das interessiert:
function prozess_vars($string) {
foreach ($_REQUEST as $var_name => $var_value) {
echo $var_name.": ".$var_value."<br>";
$string = str_replace("[".$var_name."]", $var_value, $string);
}
return $string;
}
damit geht es für jede definierte variable.
vielen dank für eure hilfe, auch wenn ich mir die lösung selbst gebastelt hab ;)
m²
Hallo
hallo.
ich habe ein Problem mit folgender Ausgangssituation:
ich habe zwei strings:$string="[name] ist dein Name.";
$name="Paul";
was herauskommen soll:
"Paul ist dein Name."
<?php
$name = "Paul";
$string = $name." ist dein Name.";
echo "<p>".$string."</p>";
// Ausgabe "Paul ist dein Name"
?>
Dazu brauchts keine regulären Ausdrücke, auch wenn das grundsätzlich auch so machbar ist. Wenn es denn unbedingt ein regulärer Ausdruck sein soll, solltest du deinen hier auch mal herzeigen, um zu schauen, was an deiner Herangehensweise falsch sein könnte.
PS: Guten Rutsch!
dito
Tschö, Auge
Dazu brauchts keine regulären Ausdrücke, auch wenn das grundsätzlich auch so machbar ist. Wenn es denn unbedingt ein regulärer Ausdruck sein soll, solltest du deinen hier auch mal herzeigen, um zu schauen, was an deiner Herangehensweise falsch sein könnte.
vielen dank für die anregungen. stringverkettung mit . kommt hier leider nicht in frage:
echo prozess_vars("[nick] ist dein Name.");
function prozess_vars($string) {
$string = preg_replace("!\[(.*?)\]!", "$$1", $string);
return $string;
}
das ist der ausschnitt.
irgendein benutzer soll in ein textfeld mal phpvariablen über [variablenname] ansprechen/ausgeben können.
wenn man z.b. nen seitenaufbau hat:
<html>
<head><title>[PageTitel]</title></head>
<body>
[Content]
</body>
</html>
wenn man dieses mit einer schleife abarbeitet, muss man alle gegebenen variablen vorher festlegen (in einem array)..
das ist es was ich verhindern will, da variablen hinzugefügt werden können, welche man nicht voraussehen kann (z.b. post daten).
vielen dank für eure bemühungen, ich hoffe mein problem ist etwas klarer,
m²
Hallo m²!
Einmal reicht, auch an Silvester ;-)
℆, ℒacℎgas
Hallo
vielen dank für die anregungen. stringverkettung mit . kommt hier leider nicht in frage:
echo prozess_vars("[nick] ist dein Name.");
function prozess_vars($string) {
$string = preg_replace("![(.*?)]!", "$$1", $string);
return $string;
}
>
> das ist der ausschnitt.
> irgendein benutzer soll in ein textfeld mal phpvariablen über [variablenname] ansprechen/ausgeben können.
> wenn man z.b. nen seitenaufbau hat:
>
> <html>
> <head><title>[PageTitel]</title></head>
> <body>
> [Content]
> </body>
> </html>
>
> wenn man dieses mit einer schleife abarbeitet, muss man alle gegebenen variablen vorher festlegen (in einem array)..
> das ist es was ich verhindern will, da variablen hinzugefügt werden können, welche man nicht voraussehen kann (z.b. post daten).
>
> vielen dank für eure bemühungen, ich hoffe mein problem ist etwas klarer,
> m²
Oha, ich habe ein [Déjà-vu](https://forum.selfhtml.org/?t=120693&m=775300).
Davon abgesehen denke ich, dass [Ashuras](https://forum.selfhtml.org/?t=120693&m=775291) Vorschlag am besten geeignet ist.
Tschö, Auge
--
Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
(Victor Hugo)
[Veranstaltungsdatenbank Vdb 0.1](http://termindbase.auge8472.de/)
Hallo m²!
"$name ist dein Name."
Zeig mal deinen Regulären Ausdruck und die Weiterverarbeitung des-
selben.
Vermutlich wird die Variable nicht durch ihren Wert ersetzt, da sie
in einer entsprechenden Umgebung genannt wird ('' statt ""). Um
Abhilfe zu schaffen, ersetze einfach in einen Ausdruck à la
echo $name.' ist dein Name.';
Das lässt sich bei o.g. Schritten sicherlich ganz leicht realisieren.
℆, ℒacℎgas
Zeig mal deinen Regulären Ausdruck und die Weiterverarbeitung des-
selben.
Vermutlich wird die Variable nicht durch ihren Wert ersetzt, da sie
in einer entsprechenden Umgebung genannt wird ('' statt ""). Um
Abhilfe zu schaffen, ersetze einfach in einen Ausdruck à la
echo $name.' ist dein Name.';
vielen dank für die anregungen. stringverkettung mit . kommt hier leider nicht in frage:
echo prozess_vars("[nick] ist dein Name.");
function prozess_vars($string) {
$string = preg_replace("![(.*?)]!", "$$1", $string);
return $string;
}
das ist der ausschnitt.
irgendein benutzer soll in ein textfeld mal phpvariablen über [variablenname] ansprechen/ausgeben können.
wenn man z.b. nen seitenaufbau hat:
<html>
<head><title>[PageTitel]</title></head>
<body>
[Content]
</body>
</html>
wenn man dieses mit einer schleife abarbeitet, muss man alle gegebenen variablen vorher festlegen (in einem array)..
das ist es was ich verhindern will, da variablen hinzugefügt werden können, welche man nicht voraussehen kann (z.b. post daten).
vielen dank für eure bemühungen, ich hoffe mein problem ist etwas klarer,
m²
hallo nochmal,
ich habe eine Lösung, falls das interessiert:
function prozess_vars($string) {
foreach ($_REQUEST as $var_name => $var_value) {
echo $var_name.": ".$var_value."<br>";
$string = str_replace("[".$var_name."]", $var_value, $string);
}
return $string;
}
damit geht es für jede definierte variable.
vielen dank für eure hilfe, auch wenn ich mir die lösung selbst gebastelt hab ;)
m²
mist schon wieder doppelpost :(
sorry
Hallo
mist schon wieder doppelpost :(
Neee: Dreifachpost.
https://forum.selfhtml.org/?t=120693&m=775326
https://forum.selfhtml.org/?t=120693&m=775320
https://forum.selfhtml.org/?t=120693&m=775325
;-)
Tschö, Auge
hallo nochmal,
ich habe eine Lösung, falls das interessiert:
function prozess_vars($string) {
foreach ($_REQUEST as $var_name => $var_value) {
echo $var_name.": ".$var_value."<br>";
$string = str_replace("[".$var_name."]", $var_value, $string);
}
return $string;
}
damit geht es für jede definierte variable.
vielen dank für eure hilfe, auch wenn ich mir die lösung selbst gebastelt hab ;)
m²