php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.06.2010, 17:08  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
bello_1234 befindet sich auf einem aufstrebenden Ast
Standard Elemente aus erzeugtem Array aussortieren und weiter verarbeiten

Hallo zusammen!
Stehe vor folgender Aufgabe:
Ich habe von einem Verzeichnis ein Array erstellt, welches alle Ordner von diesem Verzeichnis enthält.
Nun benötige ich aber nur die Elemente "test01" und "test02". Dabei ist jedoch zur Verallgemeinerung zu beachten, dass diese auch durchaus (je nach Fall) auch "test001" bzw. "test002" heißen könnten.
--> Sprich ich sollte die Elemente allgemein "test*" aussortiert haben.
Desweiteren enthalten diese "test*" - Ordner jeweils eine xml-Datei (gleichen Names) welche ich dann via DOM parsen will.

Kann mir jemand helfen, speziell erstmal was das rausziehen der "test*" Elemente aus dem Array angeht?
(Wichtig ist dabei einfach dass ich diese Ordner dann weiter auf die xml-Dateien untersuchen kann)

Habe bereits alle gängigen Funktionen was das durchsuchen/analsysieren angeht durchprobiert inkl. opendir, readdir, glob.. bekomme dass aber nicht hin!

Array
(
[0] => .
[1] => ..
[2] => .cvsignore
[3] => conf
[4] => doc
[5] => lfi.sh
[6] => population
[7] => readme.txt
[8] => test01
[9] => test02
)



Bin über jede kleine Hilfe dankbar!
Viele Grüße!
bello_1234 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 17.06.2010, 17:41  
Neuer Benutzer
 
Registriert seit: 16.06.2010
Beiträge: 8
PHP-Kenntnisse:
Fortgeschritten
Geronimo befindet sich auf einem aufstrebenden Ast
Standard

Um die passenden Elemente aus dem Array zu ziehen würde ich alle Elemente durchlaufen und per regulärem Ausdruck testen, ob der Verzeichnisinhalt mit "test" beginnt. Wenn ja, schreibst du diese Elemente in ein weiteres Array und bearbeitest sie im Anschluss oder du bearbeitest sie direkt nach dem Fund.

Eine Funktion für die regulären Ausdrücke wäre PHP: preg_match - Manual

Wenn du einen Ordner hast, kannst du seinen Inhalt auf die XML Datei überprüfen, falls vorhanden dann parsen.
Geronimo ist offline  
Alt 17.06.2010, 17:41  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von bello_1234 Beitrag anzeigen
Kann mir jemand helfen, speziell erstmal was das rausziehen der "test*" Elemente aus dem Array angeht?
Schreib den Rest, den du nicht brauchst, gar nicht erst ins Array.

Schau dir glob an.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 17.06.2010, 17:45  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 929
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

PHP-Code:
foreach (glob("[test]*",GLOB_BRACE|GLOB_ERR) as $file) { 
ragtek ist offline  
Alt 18.06.2010, 12:31  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
bello_1234 befindet sich auf einem aufstrebenden Ast
Standard

Cool danke für die Antworten, habs jetzt mit bissle "rumprobieren" und auf kleineren Umwegen hinbekommen:

$dir = "path"; // Verzeichnis welches durchsucht werden soll
$globdir = glob("$dir/test*", GLOB_ONLYDIR);
while($verzeichnis = array_shift($globdir)){
$verzeichnis = str_replace("$dir/","",$verzeichnis);
echo "$verzeichnis". "\n";
}

Jetzt fehlt mir noch eine Kleinigkeit:
Das Parsen der Dateien von den test* - Ordnern funktioniert schon alles, allerdings nur wenn ich jeweils den speziellen Pfad zur entsprechenden xml-Datei angebe:
z.B.: $filename = "/home/test/test01/conf/filter.xml"

Wie kann ich jetzt erreichen dass er hier jeweils automatisch den entsprechenden Pfad zu den gefundenen Test-Ordnern nimmt und für jedes das parsen durchführt?
z.B. $filename = "/home/test/test*/conf/filter.xml"
--> $filename = "/home/test/test01/conf/filter.xml"
--> $filename = "/home/test/test02/conf/filter.xml"
... und basierend auf diesem Pfad das Parsen der xml-Dateien durchführen
... je nachdem weiviel test*-Ordner es halt gibt!
(Hinweis: xml-file in jedem Test Ordner heißt gleich!)

Grüße!
bello_1234 ist offline  
Alt 18.06.2010, 12:47  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von bello_1234 Beitrag anzeigen
Wie kann ich jetzt erreichen dass er hier jeweils automatisch den entsprechenden Pfad zu den gefundenen Test-Ordnern nimmt und für jedes das parsen durchführt?
Das musst du wohl selber programmieren, automatisch passiert eigentlich nie etwas. Sammle zuerst alle konkreten Fundstellen in einem Array, weiterverarbeitet wird dann im nachfolgenden Schritt.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 18.06.2010, 12:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Beim Posten bitte bbCode für Quellbeispiele verwenden und Code einrücken.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 18.06.2010, 13:01  
Neuer Benutzer
 
Registriert seit: 17.06.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
bello_1234 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Das musst du wohl selber programmieren, automatisch passiert eigentlich nie etwas. Sammle zuerst alle konkreten Fundstellen in einem Array, weiterverarbeitet wird dann im nachfolgenden Schritt.
Informationen sind bereits in einem Array ($verzeichnis) gesammelt.
Dennoch weiß ich nicht wie ich diese Informationen jetzt einzeln weiterverarbeite, indem ich sie in den jeweiligen Pfad einbinden muss, um diesen Pfad dann, in Verbindung mit dem jeweiligen xml-Dokument, als Quelle für das Parsen zu benutzen?!

Noch einmal zur Übersicht:

Ermittlung aller test* - Ordner und abspeichern in $verzeichnis. Zur Kontrolle am Ende nochmal eine Ausgabe:
PHP-Code:
$dir "path"
$globdir glob("$dir/test*"GLOB_ONLYDIR);     
while(
$verzeichnis array_shift($globdir)){    
$verzeichnis str_replace("$dir/","",$verzeichnis); 
echo 
"$verzeichnis""\n"

Nun muss für jeden gefundenen "Test*" - Ordner, die jeweilige filter.xml - Datei geparst werden. Dazu muss ja der jeweilige Pfad als Quelle benutzt werden, um das DOM-Document zu laden.
Beispiel für den gefundenen "test01" - Ordner wäre das hier:
PHP-Code:
$filename "/home/test/test01/conf/filter.xml";
$document DOMDocument::load($filename); 
Das anschließende Parsen ist kein Problem. Aber wie ist es jetzt möglich dass dies für alle gefundenen test*-Ordner (je nachdem wieviel es eben gibt), das Parsen ausgeführt wird?
(Ein vorige Angabe aller Pfade würde ja vorraussetzen ich kenne bereits die Anzahl der Ordner, was allerdings nicht der Fall ist!)
bello_1234 ist offline  
Alt 18.06.2010, 13:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Man per Schleife, machst Du doch oben auch. Irgendwas sagt mir, dass der bisherige Code nicht voin Dir ist.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 18.06.2010, 19:45  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Schritt 1: Sammle alle Verzeichnisse, die "test*" enthalten (ausgehend von einem Basisverzeichnis)
Schritt 2: Iteriere durch den gesamten, restlichen Verzeichnisbaum (pro gefundenem Verzeichnis aus Schritt 1) auf der Suche nach einer .xml Datei. Sammle die Pfade zu gefundenen .xml Dateien.
Schritt 3: Verarbeite alle gefundenen Dateien
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz 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
Feed in Datenbank eintragen (Formate: json, php serialized, xml) high_five Datenbanken 5 17.06.2010 03:04
[Erledigt] Sortierung mehrerer Arrays philosapiens PHP Tipps 2010 16 08.06.2010 05:22
IE8 verliert Session Lenki PHP-Fortgeschrittene 10 25.04.2010 01:10
[Erledigt] Problem bei update mit array feldern fulltilt PHP Tipps 2010 6 13.02.2010 00:59
Elemente zu Array hinzufügen freggeln PHP Tipps 2009 4 31.12.2009 01:44
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
[Erledigt] zählen gleicher Elemente (Pärchen) im mehrdimensionalem Array vdite PHP Tipps 2008 29 22.10.2008 10:33
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Elemente in mehrdimensionalem Array gezielt updaten PHP Tipps 2005 4 29.04.2005 15:18
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xml array verarbeiten, php array verarbeiten, php xml filtern array, parser xml dom filter array, php xml array filter, mit php datei array verarbeiten, php alle xml dateien eines verzeichnisses in ein array, mit php xml array filtern, arrays verarbeiten php, array glob vergleichen php, php dom document glob, php array anzahl inhalt gleicher elemente, php array aussortieren, php array felder gleich, php array alle elemente vergleich, xml elemente in array php, php der die das aussortieren, array elemente verarbeiten, php array einträge verarbeiten, array weiter verarbeiten

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