Seite 1 von 1
wer kann mir bei regex helfen ?
Verfasst: 07.11.2005 17:14
von mad-manne
Hallo Leute,
ich weiss ... ich bin ein noob, wenn es um REGEX geht. Das steht auch ganz oben auf meiner Wunschliste, wenn ich mal endlich wieder Zeit habe was zu lernen. Momentan geht's aber leider nich
Was ich bräuchte wäre folgendes ...
Ist es eine telefonnummer ?
Ich möchte in einer Variable überprüfen, ob sich darin doch eher Text als eine Telefonnummer befindet. Eine Telefonnummer besteht aber nicht ausschliesslich aus Ziffern, da verschiedene Trennzeichen (- / ) oder was auch immer zum trennen der Vorwahl und Rufnummern verwendet werden.
Mein Ansatz hier wäre folgender: einfach "zählen", wieviele Ziffern in dem String sind und wenn mehr als 60% des um Leerzeichen bereingten Strings Ziffern enthalten "glaube" ich einfach, dass es eine Telefonnummer ist.
Was ich also bräuchte wäre eine REGEX, die mir alle Ziffern aus dem String extrahiert ... dann kann ich je mittels
strlen() vergleichen wieviele Ziffern enthalten sind.
Wäre jemand so nett und kann mir da auf die Sprünge helfen ?!
Gruss,
Manne.
Verfasst: 07.11.2005 17:46
von Underhill
Hi,
hilft das ein wenig?
Code: Alles auswählen
<?php
$number = '0123-123456';
//nur nummern:
//if (preg_match('/^[0-9]+$/i', $number))
//mit einigen sonderzeichen:
if (preg_match('/^[0-9\-\/\(\)\.\_\# ]+$/i', $number))
{
echo 'good';
}
else
{
echo 'bad';
}
?>
Gruss
Underhill
Verfasst: 07.11.2005 20:30
von mad-manne
Underhill hat geschrieben:Hi,
hilft das ein wenig?
Code: Alles auswählen
<?php
//if (preg_match('/^[0-9]+$/i', $number))
... / ...
?>
Hi ... ich fürchte NEIN
Es ist leider ja so, dass in diesem feld aus einer Datenbank oft auch notizen abgelegt wurden
(tja .. die user eben
)
beim exportieren möcht eich jetzt nochmal den "Mist" sortieren.
Bei echten Telefonnummern können aber durchaus auch 'ne "Menge" zusätzlicher Zeichen vorkommen, deshlab ist es schweirig.
Ich glaube ich mache es jetzt doch "zu Fuss":
Ich scanne den String Zeichen für Zeichen und zähle alle ziffern, die mir "unterkommen". Wenn es dann mehr als 60% Ziffern sind. Kommt der String in der neuen Datenbank in ein Telefonnummernfeld ansonsten in ein Notizfeld!
Oder hat noch jemand eine Idee, wie und ob überhaupt mein Problem mit REGEX lösbar ist
Danke und Gruss,
Manne.
Verfasst: 07.11.2005 21:29
von Underhill
Hi,
welche Zeichen koennen das denn sein?
Dann passt es doch:
Code: Alles auswählen
datensaetze auflesen
//wenn string nicht nur aus diesen Zeichen besteht:
if (preg_match('/^[0-9\-\/\(\)\.\_\# ]+$/i', $number))
mach nix
else
loeschen und in neues feld schreiben
Warum ueber wilde Prozentangaben?
Gruss
Underhill
Verfasst: 07.11.2005 21:52
von mad-manne
Underhill hat geschrieben:welche Zeichen koennen das denn sein?
Dann passt es doch:
Code: Alles auswählen
datensaetze auflesen
//wenn string nicht nur aus diesen Zeichen besteht:
if (preg_match('/^[0-9\-\/\(\)\.\_\# ]+$/i', $number))
Mama ... ich weiss schon wieso ich das Zeug so hasse
Wenn ich gezz nur
erlauben will ...
sieht es dann so aus ?!
if (preg_match('/^[0-9\-\/\(\) ]+$/i', $number))
und was bedeutet am Anfang
'/^ und am Ende das
+$/i'
und wo ist in deinem obigen Beispiel das *-Zeichen abgefragt, welches du zu den erlaubten gezählt hast.
Ich werd's auf jeden fall mal probieren ...
Danke erstmal,
Manne.
Verfasst: 07.11.2005 22:12
von Underhill
Hi,
reg. expressions doch sind keine hexerei
Du bist auf dem richtigen Weg:
preg_match('/^[0-9]+$/i', $number)
Start und Ende der Expression
preg_match('/^[0-9]+$/i', $number)
Von Anfang bis Ende des Strings
preg_match('/^[0-9]+$/i', $number)
Auf diese Zeichen pruefen
preg_match('/^[0-9]+$/i', $number)
String komplett pruefen
preg_match('/^[0-9]+$/i', $number)
gross und kleinschrift ignorieren
preg_match('/^[0-9\+]+$/i', $number)
ein + zusaetzlich zu 0-9 muss mit \ "escaped" werden
So grob mit eigenen Worten erklaert (keine 100% Gewaehr)...
Gruss
Underhill
Verfasst: 07.11.2005 23:23
von mad-manne
Underhill hat geschrieben:reg. expressions doch sind keine hexerei
Für mich leider schon
(noch) wenn ich mir so die diversen "Monster" z.B. im phpBB-Quelltext ansehe, da wird mir ganz schwindelig
So grob mit eigenen Worten erklaert (keine 100% Gewaehr)...

Vielen Dank nochmal ... ich taste mich ran und werde in Kürze berichten
So long,
Manne.
Verfasst: 08.11.2005 05:34
von Dave