Ich möchte nun jeweils ganz am Ende des Strings (muss immer das Ende sein) die Zahl zwischen (PWT und ) auslesen. In diesem Falle wäre 12345.
...
preg_match('#(PWT(.*?))#', $content, $matches);
get_number("Hier (PWT 15) mag irgendwas stehen (PWT12345)");
Diese Funktion gibt mir leider nicht die gewünschte Zahl zurück. Meiner Meinung nach müsste diese wenigstens " 15" und "12345" zurückliefern.
- Wieso liefert er mir nicht die Zahlen zurück?
Weil du Zeichen nicht maskierst.
Zu beachten sind die Klammern, welche im RE unmaskiert die Bedeutung von _capturing parantheses_ haben, welche das Muster in den Variablen $1, $2, $3... speichern.
Wenn man diese Eigenschaften nicht will, dann muss man Zeichen wie
'(' ')' '[' ']'
maskieren mit einem Backslash. zu
'(' ')' '[' ']'
- Wie mache ich es, dass er meinen Ausdruck nur anwendet, wenn dieser ganz am Ende des String ist?
Dafür gibt es sogenannte Anker
'^' findet den Beginn in einem String
'$' findet das Ende in einem String
- Wie mache ich es dass er nur Zahlen akzeptiert?
Um genau Zahlen zu treffen, gibt es zwei Möglichkeiten:
'\d' finde eine Zahl 0-9
'\D' finde etwas, das keine Zahl ist
'[0-9]' finde eine Zahl zwischen 0 und 9
'[3-6]' finde eine der Zahlen 3456
'[^3-6]' finde etwas, das keine der Zahlen 3456 ist
preg_match(
/(PWT(\d+?))$/ ,
$content,
$matches
);
dürfte dir die gewünschte Zahl in
"Hier (PWT 15) mag irgendwas stehen (PWT12345)"
zurückgeben.
mfg Beat
<°)))o>< ><o(((°>o