Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 06.09.2005, 10:32   #1
TP-Veteran
 
Benutzerbild von Daniel N.
 
Registriert seit: Sep 2002
Ort: Schweiz
Daniel N. ist auf einem guten Weg

foreach und reg_exp


hi tp-bewohner

also ich hab da grad so meine probleme mit foreach. wenn ich das prinzip richtig verstanden habe, wird das ganze array durchgelaufen und für jeden einzelnen zeiger werden die anweisungen durchgeführt. soweit korrekt?

gut, nur will das irgendwie bei mir nicht so (wahrscheinlich seh ich nur mal wieder den wald nimmer).

folgendes:

PHP-Code:
$array = array ('label' => 'value'); 

foreach (
$array as $key => $value)
        {
        
$regexp "/{{".$key."}}/";
        
$replace eregi_replace($regexp$value$string);
        } 
über das regexp pattern braucht ihr euch nicht fragen, das macht keinen grossen sinn, wichtig ist nur, das dabei '$key' aufgerufen wird.

das problem ist jetzt, dass nur eine der werte im array ersetzt wird, der rest wird stillschweigend ignoriert... woran liegt das? ein denkfehler nehme ich jetzt mal an...
__________________

Passt auf, ich bin überheblich

http://orangetree.ch-gnu.ath.cx
Daniel N. ist offline   Mit Zitat antworten


Alt 06.09.2005, 11:25   #2
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
Naja,

du musst das $array[$key]´te Element halt auch noch überschreiben.

Ich hab mal das kleine BSP. gebastelt:
PHP-Code:
$array = array (
    
'label_1' => 'Dies ist eine weitere Möglichkeit',
    
'label_2' => 'Dies ist eine weitere Chance',
    
'label_3' => 'Dies ist eine schönes Mädchen',
    
'label_4' => 'Dies ist eine schönes Auto',
    
'label_5' => 'Dies ist eine große Katastrophe'
    
);  
foreach (
$array as $key => $value)
        {
        
$array[$key]=eregi_replace("ist","war",$value);
        } 
        
print_r($array); 
Hoffe es hilft dir weiter,

so long,

skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 06.09.2005, 12:52   #3
TP-Veteran
 
Benutzerbild von Daniel N.
 
Registriert seit: Sep 2002
Ort: Schweiz
Daniel N. ist auf einem guten Weg
hmm.. nee das kann so bei mir nicht funktionieren. das ganze befindet sich in einer funktion und ich will dabei "$replace" zurückgeben und nicht das array an sich... hmmm...
__________________

Passt auf, ich bin überheblich

http://orangetree.ch-gnu.ath.cx
Daniel N. ist offline   Mit Zitat antworten
Alt 06.09.2005, 13:12   #4
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
?

Wo liegt der Sinn, ein array via foreach zu durchlaufen, wenn man immer die Variable $replace überschreibt? (Wo kommt eigentlich ?string her und was steht da drin?)

So kann natürlich nur ein Wert übergeben werden, der letzte des arrays, um genau zu sein.

Wenn du also alle geänderten Werte zurückgeben willst oder alle $replace Werte, dann musst du entweder einen aufaddierten String oder ein array zurückgeben.

Ich würde ja vorschlagen $replace[]=........
Dann gibst du wohin auch immer das array aller Ersetzungen.

Beim jetzigen Informationsstand bleibt einem der Sinn jedoch verborgen, mir ist in keiner Weise klar, was du vorhast.

In deinem Konstrukt macht so jedenfalls keine Schleife der Welt Sinn

So long,

Skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 06.09.2005, 16:06   #5
TP-Veteran
 
Benutzerbild von Daniel N.
 
Registriert seit: Sep 2002
Ort: Schweiz
Daniel N. ist auf einem guten Weg
ahh... so langsam kommen wir dem also auf die spur

also, ich klär dich mal weiter n bischen auf:

es geht um einen template parser, somit dürfte es bei dir schon geklingelt haben... nein? auch gut, dann klär ich dich auf:

PHP-Code:
public function setRplVar($label$content)    
        {
        if(
$label != preg_match("/[^a-zA-Z]/"$label))
                {
                die(
"\$err_id: 2 \"Placeholder does not match requirements\"");
                }
                
$this->varList[$label] = $content;                
        }
...

...

public function 
viewParsedTpl($tpl)
        {
        if ( (!
file_exists($this->TplDir "/" $tpl)) )
            {
            die(
"\$err_id: 1 \"Template file not found\"");
            }                
                
$getTpl file_get_contents($this->TplDir "/" $tpl);
                
// übergabe an die parser funktion 
echo $this->parseTpl($getTpl); 
        }

...

...

public function 
parseTpl($getTpl)
        {
        foreach (
$this->varList as $key => $value
            {
            
$regex_var "\{(".strtoupper($key).")\}";
                
$this->getTpl eregi_replace($regex_var$value$getTpl);
            }
            
        return 
$this->getTpl;
        } 
irgendwie fällt mir da grad kein sinnvoller weg ein die variable nicht zu überschreiben :/
__________________

Passt auf, ich bin überheblich

http://orangetree.ch-gnu.ath.cx
Daniel N. ist offline   Mit Zitat antworten
Alt 06.09.2005, 16:54   #6
TP-Moderator
 
Benutzerbild von skipperjan
 
Registriert seit: Jan 2005
Ort: Düsseldorf
skipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKEskipperjan ist ein richtiges Arbeitstier - DANKE
file_get_contents:
Diese Funktion ist mit file() identisch, außer dass file_get_contents() die Datei in einem String zurückgibt.

OK

Du liest also eine Datei in einen String ein, verstanden soweit.

Dann hast du ein nicht näher definiertes Array, $this->varList, in welchem wohl die Template-Transformationen drinstehen, deine Parser Infos.

Was zeigt er dir denn, wenn du print_r($this->varList) über dein Array laufen lässt?

Ist das Überhaupt ein array?
Was steht da drin?

Sei mir nicht böse, aber so ganz kann ich dem Ganzen noch nicht folgen.
Was wird denn zurückgegeben? Was kommt raus bei dem Gedöns?

So long,

skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!

Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
skipperjan ist offline   Mit Zitat antworten
Alt 06.09.2005, 17:57   #7
TP-Veteran
 
Benutzerbild von Daniel N.
 
Registriert seit: Sep 2002
Ort: Schweiz
Daniel N. ist auf einem guten Weg
sorry, wenn man etwas selber geschrieben hat neigt man dazu, davon auszugehen das jeder das prinzip sofort versteht

aber du hast das schon ganz gut begriffen, in dem array steht einerseits die zu ersetzende variable und andererseits mit was sie ersetzt werden soll.

und ja: es ist tatsächlich ein array (welch wunder ).. print_r ergibt eine ausgabe in folgendem stil:
Code:
Array ( [var1] => var1replacement [var2] => var2replacement )
__________________

Passt auf, ich bin überheblich

http://orangetree.ch-gnu.ath.cx
Daniel N. ist offline   Mit Zitat antworten
Alt 07.09.2005, 16:57   #8
TP-Veteran
 
Benutzerbild von Daniel N.
 
Registriert seit: Sep 2002
Ort: Schweiz
Daniel N. ist auf einem guten Weg
hmm.. keiner mehr ne idee??
__________________

Passt auf, ich bin überheblich

http://orangetree.ch-gnu.ath.cx
Daniel N. ist offline   Mit Zitat antworten
Alt 07.09.2005, 17:27   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Dein Problem steckt hier:

$this->getTpl = eregi_replace($regex_var, $value, $getTpl);

Die ganze Schleife macht keinen Sinn, da nur der letzte Durchgang genommen wird.

Du müsstest am Anfang $this->getTpl=$getTpl setzen, und dann auch immer
$this->getTpl = eregi_replace($regex_var, $value, $this->getTpl);
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 07.09.2005, 19:31   #10
TP-Veteran
 
Benutzerbild von Daniel N.
 
Registriert seit: Sep 2002
Ort: Schweiz
Daniel N. ist auf einem guten Weg
ahhhh.... mein schatzi

tausend dank steffen... obwohl ich da auch selber drauf kommen hätte müssen
__________________

Passt auf, ich bin überheblich

http://orangetree.ch-gnu.ath.cx
Daniel N. ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
foreach und reg_exp foreach und reg_exp
« [PHP] Upload/Thumbnail Script - Problem mit Umlauten im Dateinamen | Nach Formularprüfung zurück zur Eingabe »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:12 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67