kostenloser Webspace werbefrei: lima-city


Regex => Int. aus string in array schreiben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    stevestyxx

    stevestyxx hat kostenlosen Webspace.

    Hi,

    wie der Titel bereits sagt bräuchte ich mal hilfe in sachen regex.

    ich habe einen string in dem integer zahlen auftauchen, diese würde ich gerne seperat in ein array schreiben.
    es handelt sich dabei um eine url mit GET inhalten z.b. "&seite=12&id=100", aus diesem string hätte ich gerne alle zahlen am stück in einem array das es am ende dann so aussieht array[0] => 12 array[1] => 100!
    kann mir da jemand weiter helfen?

    danke schonmal im vorraus.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. vielleicht:
    $array = array();
    
    foreach ($_GET as $get) {
    
    $array[] = $get;
    
    }


    ich weiß nicht, ob es funktioniert. musste mal ausprobieren!
  4. Autor dieses Themas

    stevestyxx

    stevestyxx hat kostenlosen Webspace.

    Sorry, habe mich vielleicht falsch ausgedrückt.
    der string den ich untersuchen möchte kommt aus der datenbank.
    und diesen string möchte ich mit regex, zahlen raus filtern und in ein neues array schreiben.

    Beitrag zuletzt geändert: 4.4.2009 23:20:01 von stevestyxx
  5. dann müsste der code gehen:

    $array = array();
    
    while ($row = mysql_fetch_array(....)) {
    
    if (is_numeric($row['wert'])) {
    
    $array[] = $row['wert'];
    
    };
    }
  6. Hallo,

    wenn ich dich richtig verstanden habe, bekommst du immer einen Code wie z.B. "" heraus. Wie genau du das mit Regex aufteilst, kann ich dir nicht sagen, aber mit explode() kannst du das Ganze recht schön aufteilen.

    $gesamt = "seite=12&id=100";
    $teile = explode("&",$gesamt);
    foreach($teile as $teil) {
    	$parts=explode("=",$teil);
    	$fertig[$parts[0]]=$parts[1];
    }
    print_r($fertig);


    Die Ausgabe ist dann:
    Array ( [seite] => 12 [id] => 100 )


    Gruß
    Karlja
  7. Autor dieses Themas

    stevestyxx

    stevestyxx hat kostenlosen Webspace.

    ja sowas ähnliches habe ich auch bereits versucht aber das war mir zu hässlich darum dachte ich mir das das ganze mit regex sauberer wirkt.
  8. Die Frage wäre dann, was du hinterher damit machen willst. Wenn du immer nur die Integer-Werte rausholst, muss die Reihenfolge und die Anzahl vorher bekannt sein. Wenn du es als Array mit Schlüsseln ausliest kannst du mit den Rückgabewerten beliebig arbeiten.
  9. Autor dieses Themas

    stevestyxx

    stevestyxx hat kostenlosen Webspace.

    der string ist immer genauso formatiert demnach habe ich immer 2 integer in jedem string.
    mir würde es auch schon reichen wenn der schlüssel 0 & 1 ist...das ist net so wild.
    hintergrund ist => ein script schreibt diese fertige url in die db, ich hole die url aus der db und will damit dann aus der datenbank weitere informationen zu diesem link auslesen und dazu brauch ich die 2 zahlen die sich in dem string befinden.
    natürlich geht das auch mit explode(), keine frage aber es sieht halt sauberer mit regex aus als wenn ich jetzt den string mehrmals durch explode jage.

    das ergebniss bleibt für mich am ende das selbe^^

    Beitrag zuletzt geändert: 5.4.2009 1:24:40 von stevestyxx
  10. Eine Suche bei Google hat mir Folgendes ausgegeben:
    $gesamt = "seite=12&id=100";
    preg_match_all('/\d+/', $gesamt, $result);
    print_r($result[0]);


    Gruß
    Karlja

    Beitrag zuletzt geändert: 5.4.2009 2:07:22 von karlja
  11. Autor dieses Themas

    stevestyxx

    stevestyxx hat kostenlosen Webspace.

    Beinahe Perfekt =)
    nur frage ich mich jetzt warum er daraus ein mehrdimensionales array macht^^
    Danke dir =)

    Beitrag zuletzt geändert: 5.4.2009 1:40:19 von stevestyxx
  12. Das mehrdimensionale Array kommt durch preg_match_all zustande: http://de2.php.net/manual/de/function.preg-match-all.php.

    Du kannst sonst noch eine Weile mit preg_match und benannten Teilmustern experimentieren: http://de2.php.net/manual/de/function.preg-match.php.
    preg_match('/\D+(\d+)\D+(\d+)/', $gesamt, $result);

    Rückgabe: Array ( [0] => seite=12&id=100 [1] => 12 [2] => 100 )

    Beitrag zuletzt geändert: 5.4.2009 2:16:47 von karlja
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!