aus String Variable-Name machen ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
art
code
datei
dateiname
forum
funktion
inhalt
markup
objekt
referenz
richtige objekt
string
teil
text
url
variable namen
variablen name
wert code
wissen
zeiger
-
Hallo
wie kann man aus einem String eine Variable machen ?
$string_info = 'data123'; // --- das soll der neuen Variablen-Name werden $string_data = 'text blablabla texttext bla text';
wie bekomme ich jetzt eine Variable wie:
$data123 = 'text blablabla texttext bla text';
also wie kann ich aus dem String 'data123' den neuen Variable-Namen $data123 machen ?
geht sowas überhaupt ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
thumbshots schrieb:
Hallo
wie kann man aus einem String eine Variable machen ?
$string_info = 'data123'; // --- das soll der neuen Variablen-Name werden $string_data = 'text blablabla texttext bla text';
wie bekomme ich jetzt eine Variable wie:
$data123 = 'text blablabla texttext bla text';
also wie kann ich aus dem String 'data123' den neuen Variable-Namen $data123 machen ?
geht sowas überhaupt ?
Ganz einfach:
$string_info = 'data123'; $string_data = 'text blablabla texttext bla text'; $$string_info = $string_data; echo $data123;
-
super, das ist ja echt ganz einfach :)
ich habe einen String, den ich mit file_get_contents() aus einer Datei hole
dieser String enthält u.a. auch eingefügte Variablen-Namen
Bsp: String in der ausgelesenen Datei:
text blablabla '.$name1.' texttext '.$name2.' bla text
den Inhalt hole ich dann mit $run_content = file_get_contents($dateiname);
also quasi dann so:
$run_content = 'text blablabla \'.\$name1.\' texttext \'.\$name2.\' bla text';
beachte, die eingefügten Variablen kommen als string an (escaped) !!
um jetzt diese Sting-Teile doch zu Werten aus den Variablen zu machen, habe ich folgendes:
$run_content = file_get_contents($dateiname); $run_content = stripslashes($run_content); $pattern = '/\'.\$(.*).\'/isU'; preg_match_all($pattern, $run_content, $tmperg); $anzm = count($tmperg[0]); for ($m=0; $m<$anzm; $m++) { $run_content = str_replace($tmperg[0][$m], $$tmperg[1][$m], $run_content); }
das funktioniert !!! juhu :) ...
die eingefügten Variablen sind natürlich vorher mit Werten / Inhalten belegt worden
also hier im BSP: $name1 und $name2 sind vorhanden und nicht leer
jetzt bräuchte ich nur noch einen Pattern, der Variablen findet,
die entweder mit einfachen ' oder mit doppelten " Anführungszeichen findet
... im Pattern anstatt nur \' dann entweder \' oder \"
also damit es auch funktioniert, wenn der Inhalt in der ausgelesenen Datei so ist
text blablabla ".$name1." texttext ".$name2." bla text
nochmal zu $$ (zwei Dollarzeichen vor Variablename)
nennt man das Zeiger? ... habe beim googeln gefunden, PHP kennt keine Zeiger, nur Referenzen ?!
... aber ist es doch (Zeiger), oder?
und vielleicht kan mir jemand noch erklären, was ein & vor dem $ Zeichen macht
$string_data = 'text blablabla texttext bla text'; $test1 = $string_data; // ---- Kopie $test2 = &$string_data; // ---- Referenz
beides ($test1 und $test2) ergibt den gleichen Inhalt (aus $string_data) ???
wozu also ist &$ gut ?
Beitrag zuletzt geändert: 23.1.2012 19:40:34 von thumbshots -
Wow danke für das. Ich hab jetz schon ne Zeit lang bei Google geschaut und anderen Foren. Wollte jetzt grade nen neuen Topic machen und da stoße ich doch noch auf diesen Eintrag. Erstmal nicht sehr vielversprechend für mein Problem aber deine Anleitung und dein Code waren genau das was ich gesucht habe.
Ich habe nämlich einen Newsletter und wollte aus einer separaten HTML-Datei das Markup herausnehmen für den Mail-Body.
Das Markup sieht genau so aus wie bei dir:
Hab auch wie du schon vorher die Variablen definiert und diese dann mit deinem Code zum Funktionieren gebracht.HTML-Markup... '.$name'. noch mehr Markup... '.$email'.' bla bla
Das mit dem & kann ich dir leider auch nicht erklären.
MfG
Dominic -
Nein, das $$ ist kein Zeiger, das nennt sich einfach "Variabler Variablenname", und kann super nützlich sein, auch wenn es oft als eine der unnützesten Features abgetan wird. Zeiger gibt es in PHP nicht.
Das &$var ist eine Referenz auf eine Variable. Das ist dann schon eher etwas in der Art Zeiger. Wenn du dich mit C++ auskennst, was ich beim Begriff Zeiger mal vermute, dann wirst du vielleicht auch wissen, was eine Referenz ist. Aber hier nochmal erklärt:
Gehen wir mal davon aus du hast ein Objekt, das irretoll ist:
$obj = new irreTollesObjekt(); $obj->wert = 1;
Nun hast du eine Funktion, welche dieses Objekt verändern soll:
function aenderObjekt( $object ) { $object->wert = 5; }
Dann wirst du damit:
$obj = new irreTollesObjekt(); $obj->wert = 1; aenderObjekt( $obj ); echo $obj->wert;
eine 1 raus kriegen. Warum? Beim übergeben des Objektes an die Funktion wird das Objekt KOPIERT. Alle Werte, die du einer Funktion übergibst, egal was, werden immer kopiert. Möchtest du aber das tatsächliche Objekt übergeben, übergibst du hier eine Referenz
$obj = new irreTollesObjekt(); $obj->wert = 1; aenderObjekt( &$obj ); echo $obj->wert;
Dann übergibst du das richtige Objekt, und hinten wird eine 5 rauskommen. Das Objekt wird nichtmehr kopiert, es wird nur ein Verweis, eine Referenz auf das richtige Objekt gelegt.
Das ganze kann auch zur Performanceoptimierung genutzt werden, es gibt da meherere Anwendungsmöglichkeiten, jedoch ist das der bedeutenste und wichtigste Punkt.
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage