Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
String Array in Variable umwandeln [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
String Array in Variable umwandeln


 
hasch
30-08-2007, 19:32 
 
Kennt von euch jemand die Möglichkeit, wie man ein Array als String, bsw. $var = "$test['value']" in eine Variable umwandeln kann? Sinn und Zweck ist die Nutzung der Globalen Variable $_SERVER in den Template-Dateien :)

 
penizillin
30-08-2007, 19:34 
 
was willst du? :confused:

 
hasch
30-08-2007, 19:38 
 
Ich habe im Template-Quelltext bsw. $_SERVER['REMOTE_ADDR'] stehen und diese Variable (noch als String vorliegend) soll nun mittels PHP mit dem Inhalt von $_SERVER['REMOTE_ADDR'] ersetzt werden. Bei normalen Variablen ja kein Problem, da man nur ein zusätzliches $ vor den String-Variablennamen setzen muss... Ich hoffe es war nun etwas verständlicher :)

 
ArSeN
30-08-2007, 19:52 
 
Ich hoffe es war nun etwas verständlicher

Nö. :dontknow:

Arrays kannst du "in strings umwandeln" mit serialize() und umgekehrt mit unserialize(), aber ich habe die Vermutung das meinst du nicht.

Achsooo du meinst $var = $test['value'];

 
TobiaZ
30-08-2007, 20:18 
 
Original geschrieben von ArSeN
Achsooo du meinst $var = $test['value'];Nein, steht doch (fast) schon im ersten Posting.

am besten fährst du mit str_replace() oder preg_match_callback

 
hasch
30-08-2007, 20:21 
 
Stimmt mit eval wär das möglich, danke :)

 
TobiaZ
30-08-2007, 20:24 
 
habs extra nochmal editiert, weils sicher sicherer geht.

 
ArSeN
30-08-2007, 21:03 
 
Kapier immernoch nich was da jez gemeint war. :confused:

 
TobiaZ
30-08-2007, 21:04 
 
er hat nen String:

$var = 'das ist mein Server: $_SERVER['HTTP_HOST']';

und will, dass der Teilstring $_SERVER['HTTP_HOST'] durch die entsprechende Variable ersetzt wird.

Wozu das gut ist, hinterfragen wir nicht. ;)

 
ArSeN
30-08-2007, 21:05 
 
Aaaah... ein Satz. Gut. Danke :D

 
PHP-Desaster
30-08-2007, 21:07 
 
Original geschrieben von ArSeN
Kapier immernoch nich was da jez gemeint war. :confused:

Er hat eine Templateengine und möchte den String "$_SERVER['HTTP_HOST']" durch den Inhalt der Variable $_SERVER['HTTP_HOST'] ersetzen!

Am Sichersten wird wohl sein, wenn du eine Ersetzung durchführst:
$rep = str_replace( "\$_SERVER['HTTP_HOST']", $_SERVER['HTTP_HOST'], $str );

Edit: Viiiiel zu lahm!

 
TobiaZ
30-08-2007, 21:09 
 
Er hat eine Templateengine und möchte den String "$_SERVER['HTTP_HOST']" durch den Inhalt der Variable $_SERVER['HTTP_HOST'] ersetzen! Die hat er eben noch nicht. ;)

 
hasch
01-09-2007, 16:33 
 
Danke für eure Antworten.
Habe mir mal was neues zusammengebastelt:

$pattern = '#\{\$\$(.*?)\[[\'|\"](.*?)[\'|\"]\]\}#is';
preg_match_all($pattern, $this->content, $matches);

$i=0;
foreach($matches[0] AS $key => $match) {
$this->content = str_replace($match, ${$matches[1][$i]}[$matches[2][$i]],
$this->content);
$i++;
}


$matches[1] enthält den Variablennamen, $matches[2] den Arraynamen des Elements, ist auch alles enthalten, nur ausgeben tut er es nicht, sieht jemand, woran es ggf. liegen könnte?

 
TobiaZ
01-09-2007, 21:30 
 
nur ausgeben tut er es nicht, Ich seh keine ausgabe.

poste mal den inhalt von $matches

 
hasch
01-09-2007, 23:00 
 
print_r gibt/gab folgendes aus:

Array
(
[0] => Array
(
[0] => {$$_SERVER['REMOTE_ADDR']}
)

[1] => Array
(
[0] => _SERVER
)

[2] => Array
(
[0] => REMOTE_ADDR
)

)

 
TobiaZ
01-09-2007, 23:13 
 
"${$matches[1][$i]}[$matches[2][$i]]"
Was bist du denn da am veranstalten?

Was steht in $match?
Was steht in $this->content?

 
hasch
01-09-2007, 23:20 
 
$match enthält:

{$$_SERVER['REMOTE_ADDR']}


$this->content enthält den Inhalt der Seite, also auch:

{$$_SERVER['REMOTE_ADDR']}


Mit "${$matches[1][$i]}[$matches[2][$i]]" wollte ich auf $_SERVER['REMOTE_ADDR'] zugreifen, da man ja mit ${"_SERVER['REMOTE_ADDR']"} nicht den Inhalt von $_SERVER['REMOTE_ADDR'] zurückgeliefert bekommt :)

 
TobiaZ
01-09-2007, 23:33 
 
Original geschrieben von hasch
Mit "${$matches[1][$i]}[$matches[2][$i]]" wollte ich auf $_SERVER['REMOTE_ADDR'] zugreifen, da man ja mit ${"_SERVER['REMOTE_ADDR']"} nicht den Inhalt von $_SERVER['REMOTE_ADDR'] zurückgeliefert bekommt :) Keine Ahnung, wie man auf so nen verhackstückelten Code kommt.

${$arr}[$key]

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:59 Uhr.