CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |

22.10.2009, 19:46:41
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 35
Beiträge: 21
|
|
IP regex
Kann jetzt nicht beurteilen ob das in die Grundlagen gehört aber ich zähl mich noch zu den Anfängern.
Beschäftige mich seit einigen tagen mit Regex und bin nun auf ein problem gestoßen.
Ich brauch nen Regex der auf das IP Format 255.255.255.255 matcht. Aber er soll auch auf das format [0-255].[0-255].[0-255].[0-255] matchen.
So das zum Beispiel die ip 214.16.[0-16].[0-255] erkannt wird.
Geschaft hab ich es mittleerweile mit dem Regex:
Code:
'~(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])|(\[([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])|(\[([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])|(\[([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\]))\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])|(\[([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\-([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\]))~'
Funktioniert einwandfrei... ist aber sau Langsam. also ne größere liste dauert da schonmal ne minute zum absuchen.
Kennt wer ne kürzere methode?
|

22.10.2009, 20:40:42
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: IP regex
wie wäre es hiermit:
PHP-Code:
$pat = "=([0-9]{1,3}|\\[[0-9]{1,3}-[0-9]{1,3}\\])([.]([0-9]{1,3}|\\[[0-9]{1,3}-[0-9]{1,3}\\])){3}=";
$subj = "214.16.[0-16].[0-255]";
if(preg_match($pat, $subj, $matches)){
var_dump($matches);}
allerdings kann dann da auch sowas stehen:
1.1.1.[01-002]
also wenn du das nicht wölltest müsstest du noch führende nullen auschließen.
|

22.10.2009, 20:59:54
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 35
Beiträge: 21
|
|
AW: IP regex
Erstmal danke. Funktioniert gleich mla um einiges besser.
Wär jetzt halt noch toll wenn du dazu noch was zu sagen hättest. bin ja hier zum lernen und nicht um code zu kopieren
|

22.10.2009, 23:34:16
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 35
Beiträge: 21
|
|
AW: IP regex
okay so ganz funktioniert der doch nicht.
dein regex matcht von 0-999
|

22.10.2009, 23:39:14
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: IP regex
okay, dann nehm ich das mal eben auseinander, vielleicht kommst du ja selbst drauf, wie man das so umbaut, dass es für 0-255 funktioniert...
=([0-9]{1,3}|\\[[0-9]{1,3}-[0-9]{1,3}\\])
der teil hier besagt, dass entweder eine zahl da steht oder [ gefolgt von einer zahl gefolgt von - gefolgt von einer zahl gefolgt von ] steht. also das | ist das oder, das {1,3} heißt 1 mal bis 3 mal, das \\] sind die ] usw.
([.]([0-9]{1,3}|\\[[0-9]{1,3}-[0-9]{1,3}\\])){3}=
wie man leicht sieht, kommt das pattern nochmal vor, allerdings steht nun davor ein . und das pattern mit dem . davor muss insgesamt noch drei mal vorkommen.
wie man jetzt die zahl 0-255 darstellt, muss ich nochmal nachdenken.
|

23.10.2009, 11:30:14
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: IP regex
ungetestet:
(1?[0-9]?[0-9]|2[0-5][0-5])
also das vor dem | ist 0 bis 199, das danach ist 200 bis 255.
[1-6] z.b. bedeutet die zahlen 1 bis 6, das ? steht für: kann einmal stehen, muss aber nicht.
|

23.10.2009, 17:28:30
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 47
Beiträge: 1.938
|
|
AW: IP regex
alternativ die passende filter-funktion von php nutzen: FILTER_VALIDATE_IP
cx
|

02.11.2009, 16:39:32
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 35
Beiträge: 21
|
|
AW: IP regex
Zitat:
Zitat von feuervogel
ungetestet:
(1?[0-9]?[0-9]|2[0-5][0-5])
also das vor dem | ist 0 bis 199, das danach ist 200 bis 255.
[1-6] z.b. bedeutet die zahlen 1 bis 6, das ? steht für: kann einmal stehen, muss aber nicht.
|
Das stimmt so zwar allerdings wird zum Beispiel die Zahl 239 nicht gematcht da die letzten beiden Zahlen ja nicht höher als 5 sein dürfen.
Mit deiner Hilfe und weiteren einlesen in regex bin ich aber weitergekommen.
(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
der erste Teil gleich wie bei dir, der zweite teil: 2[0-4][0-9] matcht von 200 - 249 und der letze Teil 25[0-5] matcht von 250 - 255.
Damit bin ich jetzt schon um einiges schneller Unterwegs.
Danke für die Hilfe! Super Community hier!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:09:58 Uhr.
|