Regex => Int. aus string in array schreiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
array
code
dank
datenbank
ende
experimentieren
fertig code
filtern
folgendes ausgegeben code
frage
http
information
manual
match
part
string
teil
url
zahl
-
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
vielleicht:
$array = array(); foreach ($_GET as $get) { $array[] = $get; }
ich weiß nicht, ob es funktioniert. musste mal ausprobieren!
-
dann müsste der code gehen:
$array = array(); while ($row = mysql_fetch_array(....)) { if (is_numeric($row['wert'])) { $array[] = $row['wert']; }; }
-
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 -
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.
-
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.
-
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 -
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 -
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 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage