PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Ausdrücke in Arrays speichern


Gast
2005-09-02, 16:06:38
Ich krieg die Krise. In PHP möchte ich eine Prozedur bauen, die folgendes tun soll:

Per readdir($dir) wird in ein Array ($content) der Ordnerinhalt, sprich die Dateien, gespeichert. In einem anderen Array speicher ich Strings ab($strings = array("AB","CD")). Nun soll die Prozedur jedes Arrayelement des $content sich vorknüpfen und den Dateinamen auf das Beinhalten aller Elemente von $strings überprüfen, per preg_match und die Strings löschen.
Sprich "AB_CD" == Wahr, "AB_DE" == Falsch.

Das, was ich mir ausgedacht habe, funktioniert, aber nicht so, wie es sollte.
$langfiles = getfiles($dir) // eigene Funktion

$expressions = array("AB","CD");

foreach($langfiles as $file)
{
foreach($expressions as $expression)
{
if (preg_match('{'.$expression.'}', $file))
{
$filename = preg_replace('{'.$expression.'}', "", $file); // !
}
}
if (!empty($filename))
{
print $filename."<br />";
}
$filename = "";
}

Da, wo ich das "!" hingesetzt habe, ist der Punkt, an dem as Haken müsste, denn eigentlich müsste das letzte Argument $filename sein, damit die Änderungen auch wirklich übernommen werden, sonst wird immer nur ein Element ersetzt und nicht alle des Strings.

Kann mir da wer weiterhelfen?

oliver123
2005-09-02, 18:36:30
Ich glaub ich habs nicht ganz verstanden aber meintest Du sowas?

$files = array('datei1','dateiAB','datei3','dateiCD','hallaliAB');
$pattern = array ('{AB}','{CD}');
$replace = array('','');
$files=preg_replace($pattern, $replace, $files);

foreach ($files as $file) {
echo $file.'<br>';
}

Der Code löscht also nur das AB bzw. CD raus. Wenn Du alles löschen willst dann musst Du das halt entsprechend anpassen.

Gast
2005-09-03, 15:45:11
Danke für den Vorschlag, leider ist das nicht ganz, was ich brauchte (habs auch halb vergessen zu erwähnen).

Das Skript sollte zuerst checken, ob die Strings im Array auch ALLE im Dateinamen vorkommen (preg_match(), untersützt leider keine Arrays) und nur dann diese entfernen und bearbeitet ausgeben.