php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.01.2006, 16:40  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard Arrays in parser

Hallo

So nun das mit der foreach Schleife hab ich Teilweise geschafft.
Nun muss ich nur noch Arrays realisieren.

wie mach ich es am besten, dass

Code:
{$replace["array"]["arrayelement2"]....}
im HTML code richtig ersetzt werden ?

mit normalen Ausdrücken wie {$replace} funktioniert es ja wunderbar die ersetzte ich mit preg_replace.
--------
Ich hab mir schon überlegt
{$replace["array"]["arrayelement2"]....} mit
Code:
"]["
zu exploden aber naja funktioniert ja auch nicht ganz.


Wie sollte ich es am besten machen =


Gruß SimonErich
__________________
Der G-Translator
Simon9990 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.01.2006, 17:02  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Fang doch nicht gleich mit Spezialfällen (mehrdimensionalen Arrays) an. Halt dich an die einfachen Elemente und bau danach wenns funktioniert weiter.
Template-Skripte sollten übrigens nicht die gleiche ausschweifende Syntax ($, ", ...) haben wie die üblichen serverseitigen Skriptsprachen, sonst kannst du ja gleich auf Templates verzichten.
Zergling-new ist offline  
Alt 20.01.2006, 17:31  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Ja ein eindimensionales Array kann ich bereits parsen.
Nur weiß ich nicht wie ich ein mehrdimensionales machen soll.

hier der Code für das eindimensionales
PHP-Code:
<?php
         preg_match_all
("/\{[$]"$needle ."\[(.*)\]\}/im"$this->strTemplate$array_element);
         
$first_element $array_element[1][0];
         
        
$this->strTemplate preg_replace("/\{[$]"$needle ."\["$first_element ."\]\}/im"$replacement[$first_element], $this->strTemplate);

?>
__________________
Der G-Translator
Simon9990 ist offline  
Alt 20.01.2006, 23:20  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hilft dir das?
Das funktioniert übrigens auch bei 1dim Arrays

PHP-Code:
<?php
$tpl 
"{Array1['Arr1Dim1'][Arr1Dim2]}{Array2['Arr2Dim1'][Arr2Dim2]['Arr2Dim3']}";

preg_match_all("/{(.*?)(\[.*?\])}/im"$tpl$match1);

$cntArrays 0;
foreach (
$match1[1] as $key=>$mArray)
{
    
$multiArrays[$cntArrays]['name'] = $mArray;
    
    
preg_match_all("/(?:\[[\'\"]?(.*?)[\'\"]?\])/im"$match1[2][$key], $match2);
    
    
$multiArrays[$cntArrays]['dimension'] = $match2[1];
    
$cntArrays++;
}

echo 
"<pre>" print_r($multiArraystrue) . "</pre>"
?>
Zitat:
Array
(
[0] => Array
(
[name] => Array1
[dimension] => Array
(
[0] => Arr1Dim1
[1] => Arr1Dim2
)

)

[1] => Array
(
[name] => Array2
[dimension] => Array
(
[0] => Arr2Dim1
[1] => Arr2Dim2
[2] => Arr2Dim3
)

)

)
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 21.01.2006, 00:52  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Hi vielen Dank!!!
Könntest du mir nur mal diesen Befehl hier ganz genau erklären ?

PHP-Code:
<?php
preg_match_all
("/(?:\[[\'\"]?(.*?)[\'\"]?\])/im"$match1[2][$key], $match2);
?>
Also die Zeichen wie z.Bsp: ?: sagt das eine unzählbare Wiederholung an ?
Ich hab bereits auf php.net nachgesehen jedoch wurde mir nicht ganz klar was das macht!

____________________

Naja so ich habs nun hab einen kleinen Teil weggelassen da ich denke, dass es so einfacher geht wenn ich einfach nur die erste preg_match Abfrage mach.
Denn dann hab ich ja eigentlich alle Daten.

Nur ein Problem jetzt hab ich die Array Tiefe und das Array jetzt replace ich einfach das Array mit dem zu ersetztenden Array also

also aus {$dasArray["1Dimens"]["2Dimens"]} sollte nun der Wert aus $dasArray["1Dimes"]["2Dimens"] werden.

Und nun wirds peinlich

wie bekomme ich nun aus dem $Arraywert["name"] und $Arraywert["dimension"] den Wert ?

So geht es nicht:
PHP-Code:
$array $replacement $match1[1][0]; 
Ich hoffe ihr wisst was ich meine

Gruß SimonErich
__________________
Der G-Translator
Simon9990 ist offline  
Alt 21.01.2006, 11:04  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von Simon9990
Also die Zeichen wie z.Bsp: ?: sagt das eine unzählbare Wiederholung an ?
Ich hab bereits auf php.net nachgesehen jedoch wurde mir nicht ganz klar was das macht!
?: sagt einfach nur aus das Subpattern nicht als Treffer gewertet werden soll ist halt sinnvoll um Treffer auszublenden die man nicht braucht aber man das Sub Pattern braucht.
http://www.regenechsen.de/phpwcms/in...gex_allg_liste

Nimm die beiuden ?: einfach mal raus dann siehst ja wie das Array dann aussieht

Zitat:
Zitat von Simon9990
Naja so ich habs nun hab einen kleinen Teil weggelassen da ich denke, dass es so einfacher geht wenn ich einfach nur die erste preg_match Abfrage mach.
Denn dann hab ich ja eigentlich alle Daten.

Nur ein Problem jetzt hab ich die Array Tiefe und das Array jetzt replace ich einfach das Array mit dem zu ersetztenden Array also

also aus {$dasArray["1Dimens"]["2Dimens"]} sollte nun der Wert aus $dasArray["1Dimes"]["2Dimens"] werden.

Und nun wirds peinlich

wie bekomme ich nun aus dem $Arraywert["name"] und $Arraywert["dimension"] den Wert ?
da fällt mir so direkt nur eval ein aber da must dann gut aufpassen das man darüber nicht fremden code ausführen kann.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 21.01.2006, 13:03  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Super Tutorial
Habs mir mal durchgelesen

Mit eval hab ich es schon probiert naja eben zu unsicher!
Hast du sonst noch eine Idee wie ich es ausdrücken könnte ?
__________________
Der G-Translator
Simon9990 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
Mehrere Arrays summieren buggybugga PHP-Fortgeschrittene 8 22.07.2008 11:51
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
Mehrere Mehrdimensionale Arrays Stefano PHP Tipps 2006 5 12.10.2006 13:18
Arrays sortieren, Bezeichnung, Preis Ticos PHP Tipps 2006 4 07.09.2006 19:37
Arrays kreuzen PHP Tipps 2006 13 08.03.2006 11:36
2 Arrays kombinieren Transmitter PHP Tipps 2006 5 02.01.2006 16:16
[Erledigt] 2 Arrays miteinander vergleichen PHP Tipps 2007 3 17.12.2005 16:54
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
5 assosiative arrays gleichzeitig sortieren PHP Tipps 2004-2 2 13.12.2004 14:07
Erkennung von Arrays in Strings PHP-Fortgeschrittene 15 07.12.2004 13:00
2 arrays in abhängigkeit ??? PHP Tipps 2004 2 11.08.2004 21:19
Template Parser Script Suckd PHP-Fortgeschrittene 2 11.07.2004 17:20
[Erledigt] parser PHP Tipps 2004 2 01.07.2004 10:48
Werte eines Arrays in eine MySQL schreiben PHP Tipps 2004 2 28.06.2004 13:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
print_r 2dimen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:32 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.