php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.04.2005, 15:02  
Gast
 
Beiträge: n/a
Standard [Erledigt] $$var / ${$var} in preg_replace_callback() verwenden

Hallo,

habe ein Problem mit $$var und regulären Ausdrücken. Was muss ich an die mit ???? markierte Stelle setzen, dass ich das gewünschte Ergebnis erhalte:

Code:
$template = "asfdasd %%VAR1%% asdfasdf %%VAR2%%";

$var1 = "XXXXXXX";
$var2 = "YYYYYYY";

$template = preg_replace("/%%(.+?)%%/", ????, $template);
heraus kommen sollte folgendes:

Code:
$template = "asfdasd XXXXXXX asdfasdf YYYYYYY";
D.h. es soll

Problem 1.

Die Bezeichnung VAR1 (= "\$1" in dem regulären Ausdruck) soll in Kleinbuchstaben umgewandelt werden. Allerdings funktioniert folgender Ansatz nicht:

Code:
$template = preg_replace("/%%(.+?)%%/", strtolower("\$1"), $template);
Das funktioniert selbstverständlich noch viel weniger:

Code:
$template = preg_replace("/%%(.+?)%%/", "strtolower(\$1)", $template);
Frage 1: Wie muss ich den zweiten Parameter von preg_replace verwenden wenn er noch umgewandelt werden soll? Geht das nur über die Funktion "preg_replace_callback()"?

Code:
$template = preg_replace_callback("/%%(.+?)%%/", "my_tolower", $template);

function my_tolower($array){
	return strtolower($array[1]);
}
Das einfachere Problem hätte ich damit bereits gelöst.

Problem 2.

Es soll der _Wert_ der Variablen var1 verwendet werden. var1 ist variabel.

Folgendes habe ich bereits ausprobiert:
Code:
function my_tolower($array){
	$new_var = strtolower($array[1]);
	echo "\nhier:" . $new_var . "---\n";
	return $new_var;
}

function my_tolower($array){
	$new_var = strtolower($array[1]);
	echo "\nhier:" . ${$new_var} . "---\n";
	return {$$new_var};
}


function my_tolower($array){
	$new_var = strtolower($array[1]);
	echo "\nhier:" . {$$new_var} . "---\n";
	return {$$new_var};
}
Was genau passiert denn wenn man $$var schreibt und wie kann ich es in diesem Fall verwenden?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.04.2005, 15:04  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

spass das zu lesen: 0

bitte [php]-tags benutzen :P
robo47 ist offline  
Alt 20.04.2005, 15:29  
Gast
 
Beiträge: n/a
Standard

Sorry, ich hab's vergessen. Hab den Code-Teil in -Tags gesetzt. Hätte ich doch andere Tags verwenden sollen? ??
 
Alt 20.04.2005, 15:36  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Die Geltungsbereiche von Variablen sollten hier eigentlich bekannt sein.
Wenn man anstatt globale Variablen zu verwenden, lieber die Funktion my_tolower() an ein Objekt bindet (empfehlenswert), bietet sich das an:

preg_replace_callback(pattern, array(&$object, 'method_name'), subject)

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq ist offline  
Alt 20.04.2005, 15:48  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

naja frage beantwortet, aber ja du hättest nicht die code-tags sondern die php-tags benutzen sollen :P
robo47 ist offline  
Alt 20.04.2005, 15:50  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Waq
Die Geltungsbereiche von Variablen sollten hier eigentlich bekannt sein.
Wenn man anstatt globale Variablen zu verwenden, lieber die Funktion my_tolower() an ein Objekt bindet (empfehlenswert), bietet sich das an:

preg_replace_callback(pattern, array(&$object, 'method_name'), subject)
Ja, Geltungsbereiche von Variablen sind klar. Den obigen Code habe ich nachträglich noch verändert (ohne ihn auszuprobieren!).

Der 2. Paraemter von preg_replace_callback muss doch der Name einer Callback-Funktion sein, die mit einem Array aufgerufen wird. Wie kann

Code:
array(&$object, 'method_name')
eine aufrufbare Funktion sein? Wenn ich das ausprobiere, erhalte ich die zu erwartende Warnung:

Code:
Warning:  preg_replace_callback() requires argument 2, 'Array', to be a valid callback in D:\xampp\htdocs\cms\fivecubes\modules\up2date\up2date.php on line 22
Was passiert genau, wenn ich $$var/${$var} schreibe?
 
Alt 20.04.2005, 15:56  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von atreidis
Wie kann
Code:
array(&$object, 'method_name')
eine aufrufbare Funktion sein?
indem method_name() eine Methode des Objekts $object ist.

Zitat:
Zitat von atreidis
Was passiert genau, wenn ich $$var/${$var} schreibe?
PHP-Code:
$bar "whatever";

function 
foo() {
  
$var "bar";
  return $
$var;  //liefert nichts, da $bar in der Funktion nicht existiert

__________________
mod = master of disaster
Waq ist offline  
Alt 20.04.2005, 17:27  
Gast
 
Beiträge: n/a
Standard

Das mit dem Objekt ist eine coole Idee, wusste nicht, dass man das so machen kann!

Zitat:
Zitat von Waq
PHP-Code:
$bar "whatever";
function 
foo() {
  
$var "bar";
  return $
$var;  //liefert nichts, da $bar in der Funktion nicht existiert

Könnte man meine Frage nach $$var so beantworten:

Sieht der Parser $$var1 = wert1, schaut er in seiner Symboltabelle nach, ob eine Variabel $var1 = wert11 existiert, falls ja, existiert ab sofort auch eine Variable $wert11 = wert1. Aber es gilt nicht immer $$var1 == $wert11. Stimmt das so?
 
Alt 20.04.2005, 18:02  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von atreidis
Zitat:
Zitat von Waq
PHP-Code:
$bar "whatever";
function 
foo() {
  
$var "bar";
  return $
$var;  //liefert nichts, da $bar in der Funktion nicht existiert

Könnte man meine Frage nach $$var so beantworten: [..]
Nicht so kompliziert. Wenn $var == "bar", dann ist $$var gleichbedeutend mit $bar, aber eben $bar im lokalen Namensraum.
An dieser Stelle (Beispiel oben) ist $$var genau wie $bar einfach eine nicht definierte Variable.
__________________
mod = master of disaster
Waq ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable aus Subselect in JOIN verwenden GSJLink Datenbanken 5 25.05.2008 11:36
nuSoap mit document/literal verwenden vegeta PHP Tipps 2006 2 29.06.2006 12:49
<button> verwenden - wie unterscheiden??? Tigermoon PHP Tipps 2006 12 31.05.2006 11:44
Post- und Get-Methode gleichzeitig verwenden PHP Tipps 2007 50 07.12.2005 08:13
[Erledigt] PHP-Sessions verwenden oder selber machen? PHP Tipps 2007 6 04.12.2005 11:39
Instanz über mehrere Seiten verwenden? becks123 PHP Tipps 2005-2 3 22.08.2005 10:10
Mehrere SESSION verwenden? michi174 PHP Tipps 2005-2 4 22.06.2005 17:40
COM-Object unter UNIX verwenden? PHP-Fortgeschrittene 1 25.05.2005 12:02
Grafiken als Rahmen verwenden?! CSS HTML, Usability und Barrierefreiheit 8 03.03.2005 20:49
musst man &uml; in meta tags verwenden? HTML, Usability und Barrierefreiheit 16 24.02.2005 17:50
Wie kann man den Windows eignen SMTP-Server verwenden? PHP Tipps 2005 3 18.02.2005 10:32
Daten aus Confixx 3 verwenden PHP Tipps 2005 1 10.02.2005 10:07
blob verwenden (xtreme noob) Malfunction Datenbanken 9 03.02.2005 13:51
include oder function verwenden was ist der unterschied? dazerglovic PHP Tipps 2004 1 02.09.2004 09:04
PHP5-Interpreter verwenden Quadaptor Server, Hosting und Workstations 3 15.08.2004 11:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
{$var}, preg_replace_callback return template, ${$var}, php include \in mehreren funktionen\, preg_replace_callback strtolower, php include function variable im include in mehreren funktionen verwendenphp, \preg_replace_callback\ html tags, preg_replace_callback, preg_replace_callback variable, preg_replace_callback unterschied, \requires argument 2, \'array\', to be a valid callback\

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.