RegExp-Frage

Antworten
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63783
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#1 RegExp-Frage

Beitrag von tracer »

Ist hier jemand fit mit so was?

Ich gebe zu, ich habe mich jetzt nur sehr selten damit intensiver ausseinandergesetzt (ja, den O'Reilly-Schinken habe ich hier, aber es gibt unterhaltsamere Kost *g*)

Folgendes Konstrukt verwende ich:

Code: Alles auswählen

preg_match("/-t\d+\.html/", $thread_url, $matches);
$foo = $matches[0];
$foo = str_replace('-t', '', $foo);
$thread_id = str_replace('.html', '', $foo);
 
Die beiden str_replace sind natürlich inakzeptabel hässlich. Wie formuliere ich das Pattern, dass mir nur der gematchte Teil zu "\d+" in $matches[0] abgelegt wird?
Benutzeravatar
FPK
Beiträge: 4647
Registriert: 01.12.2005 17:21:35
Wohnort: Franken

#2 Re: RegExp-Frage

Beitrag von FPK »

\d+ klammern, dann sollte der Teilmatch in $matches[1] liegen. $matches[0] enthält der PHP-Doku nach immer den kompletten Match.
- T-Rex 450 SE: Scorpion -8; 14er Ritzel; Jazz; 3xHS65HB; S9650; Gy401; R607FS
- T-Rex 450 CDE mit UH-1C-Rumpf im Bau: 430L; 4xHS56; Gy401; Schulze 8.35
- T-Rex 500: Scorpion 3026-1600; BL60G; 3xS9650; AC-3X; BLS-251; R617FS
- T-Rex 700N: OS 91 SZ-PS; TS: 3*JR8717; Gas: S9254; LTG/LTS-6100; MultiGov Pro; ReactorX; R6008HS
- Hornet X3D; Micron V2; Blade mSR; Piccolo V2
- diverse Simulatoren: lieber Sim statt E
- diverse Flächenflieger
- T8, FF-7 FASST, FX-18
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63783
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#3 Re: RegExp-Frage

Beitrag von tracer »

FPK hat geschrieben:\d+ klammern, dann sollte der Teilmatch in $matches[1] liegen. $matches[0] enthält der PHP-Doku nach immer den kompletten Match.
Perfekt, danke.

in $matches[1] liegt nun die id :)

Code: Alles auswählen

<?php
$thread_url = " http://www.rchelifan.org/forum-f38/neues-video-mini-z-zeitmessanlage-t94724.html";

preg_match("/-t(\d+)\.html/", $thread_url, $matches);
$foo = $matches[0];
$foo = str_replace('-t', '', $foo);
$thread_id = str_replace('.html', '', $foo);

print_r($matches);

?>

Code: Alles auswählen

root@rhfdevel:~# php r.php 
Array
(
    [0] => -t94724.html
    [1] => 94724
)
Mit Klammern hatte ich schon probiert, aber wohl irgendwie falsch :)
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63783
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#4 Re: RegExp-Frage

Beitrag von tracer »

Das sieht doch viel geschmeidiger aus :)

Code: Alles auswählen

preg_match("/-t(\d+)\.html/", $thread_url, $matches);
$thread_id = $matches[1];  
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63783
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#5 Re: RegExp-Frage

Beitrag von tracer »

FPK hat geschrieben:der PHP-Doku nach immer den kompletten Match.
Jetzt fühle ich mich gerade etwas doof :oops:

http://de2.php.net/manual/en/function.preg-match.php
$matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.
Und dann noch Example #3 & #4. Ich sollte für heute einfach mal ne Pause machen ^^
Antworten

Zurück zu „PC & Multimedia“