Regulärer Ausdruck für "index of"-Seite :(

Hawkster

Erfahrenes Mitglied
Hi allesamt,

ich will eigentlich was total einfaches machen, weiß aber net wies "am elegantesten" funktioniert.

Ich haben eine "Index of"-Page, die ich "logisch" verarbeiten möchte...

Nun habe ich folgende Zeilen in einem Array wie z.b.:
Code:
aaxx-2010-33.pdf        26-May-2011 20:44   29K

Nun habe ich mir einen sehr wirren Ausdruck zusammen gebaut (bin da nicht wirklich talentiert drin
PHP:
$day = '([1-9])|([1-2][0-9])|(30|31)';
$month = '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)';
$year = '([0-9][0-9][0-9][0-9])';
$time = '[0-9][0-9]\:[0-9][0-9]';
$date = '/'.$day.'\-'.$month.'\-'.$year.'\s'.$time.'/';
$pattern = $date;

Wie bekomm ich es nun hin, das ganze Array durch mein Pattern zu hauen und als Resultat sowas zu bekommen:
Code:
$array[0]['file'] = "aaxx-2010-33.pdf"
$array[0]['date'] = "26-May-2011 20:44"
$array[0]['size'] = "29K"

Wäre nett wenn ihr helfen würdet :(

Mit freundlichen Grüßen,
Hawkster
 
Hallo,

hmm, ich würd mir den den höchsten Key im Array suchen und das ganze in ner Schleife abarbeiten.

hier ein kleies Beispiel:
PHP:
<?php
//testdaten
$test = array('aaxx-2010-33.pdf        26-May-2011 20:44   29K','aaxx-2010-33.pdf        26-May-2011 20:44   29K','aaxx-2010-33.pdf        26-May-2011 20:44   29K');
//höchsten key ermitteln
krsort($test);
echo 'Der höhste Index des Arrays ist '.key($test).'';  

$i = 0; // zähler
while($i<=key($test)){
// deine regeln
$x = explode(" ",$test[$i]);
$ka[$i]['name'] = $x[0];
$ka[$i]['date'] = $x[8].' '.$x[9];
$ka[$i]['size'] = $x[12];
//ausgabe
echo '<pre>';
var_dump($ka);
echo '</pre><br><br>';
$i++;
}
?>
 
Zuletzt bearbeitet:
Sind es Spaces oder Tabs? Versuch es mal mit dem in meiner Signatur verlinkten Regex-Tester, da hat es mit
Code:
(.*?)\s+(.*?)\s+(.*)\s+(.*)
funktioniert..

mfg chmee
 
Vielen Dank für die Antworten,

Dies ist der Link von der "Index Of"-Seite http://pollux.dhbw-mosbach.de/cmos_extern_kurs_ext/

@vandump:
Bei deinem Beispiel gehts du davon aus das jedes "String-Segment" immer an der gleichen Stelle steht. Das gefällt mir net so...

@chmee
Das mit dem Regex versuch ich derzeit auch, bin aber definitiv zu unerfahren.

Wollte das Problem angehen indem ich ein explode() auf das Datum anwende.

Pseudocode:
PHP:
<?
$string = "aaxx-2010-33.pdf        26-May-2011 20:44   29K";

//==> Suche Datum und Uhrzeit über nen coolen Befehl uns speichere in $temp
$array['0']['date'] = $temp;

//==> Zerlege Zeichenkette bei Datum
$lala = explode($array['0']['date'], $string);
$array['0']['name'] = trim($lala[0]);
$array['0']['size'] = trim($lala[1]);

So ungefähr stell ich mir das vor (und sieht meiner Meinung auch sehr sicher aus. Denn das Datum ist das einzige welches immer einem Muster folgen muss ;)

Nur weiß ich net wie ichs gebacken bekomm ;)
 
Zuletzt bearbeitet:
Dann schau Dir nochmal den Regextester an, dort kann man sich auch den php-Code anzeigen lassen ;)

mfg chmee
 
Hallo,
m.E. geht das auch ohne regEx:
PHP:
$string = 'aaxx-2010-33.pdf        26-May-2011 20:44   29K  ';

$strArr = array_values(array_filter(explode(' ',$string)));
$resultArr[0]['file'] = $strArr[0];
$resultArr[0]['date'] = $strArr[1].' '.$strArr[2];
$resultArr[0]['size'] = $strArr[3];

print_r($resultArr);
Ergebnis:
Code:
Array (
    [0] => Array
        (
            [file] => aaxx-2010-33.pdf
            [date] => 26-May-2011 20:44
            [size] => 29K
        )
)
 
Zurück