SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.10.2009, 19:46:41
Prokonskull Prokonskull ist offline
Anfänger
 
Registriert seit: Oct 2009
Alter: 31
Beiträge: 21
Prokonskull befindet sich auf einem aufstrebenden Ast
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?
Mit Zitat antworten
  #2  
Alt 22.10.2009, 20:40:42
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
feuervogel befindet sich auf einem aufstrebenden Ast
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.
Mit Zitat antworten
  #3  
Alt 22.10.2009, 20:59:54
Prokonskull Prokonskull ist offline
Anfänger
 
Registriert seit: Oct 2009
Alter: 31
Beiträge: 21
Prokonskull befindet sich auf einem aufstrebenden Ast
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
Mit Zitat antworten
  #4  
Alt 22.10.2009, 23:34:16
Prokonskull Prokonskull ist offline
Anfänger
 
Registriert seit: Oct 2009
Alter: 31
Beiträge: 21
Prokonskull befindet sich auf einem aufstrebenden Ast
AW: IP regex

okay so ganz funktioniert der doch nicht.

dein regex matcht von 0-999
Mit Zitat antworten
  #5  
Alt 22.10.2009, 23:39:14
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
feuervogel befindet sich auf einem aufstrebenden Ast
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.
Mit Zitat antworten
  #6  
Alt 23.10.2009, 11:30:14
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
feuervogel befindet sich auf einem aufstrebenden Ast
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.
Mit Zitat antworten
  #7  
Alt 23.10.2009, 17:28:30
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 42
Beiträge: 1.938
cortex befindet sich auf einem aufstrebenden Ast
AW: IP regex

alternativ die passende filter-funktion von php nutzen: FILTER_VALIDATE_IP

cx
Mit Zitat antworten
  #8  
Alt 02.11.2009, 16:39:32
Prokonskull Prokonskull ist offline
Anfänger
 
Registriert seit: Oct 2009
Alter: 31
Beiträge: 21
Prokonskull befindet sich auf einem aufstrebenden Ast
AW: IP regex

Zitat:
Zitat von feuervogel Beitrag anzeigen
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!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Regex: Bilder und Urls (Links) parsen Achim74 PHP Grundlagen 2 21.04.2009 09:15:32
regex, geht aufem localhost, aber nicht online JuliusCaesar PHP Grundlagen 14 14.12.2007 11:05:36
regex Problem morsche PHP für Fortgeschrittene und Experten 10 19.01.2005 16:29:41
RegEx aber wie ? yozek PHP für Fortgeschrittene und Experten 3 03.11.2004 14:58:06
regex problem - und/nicht |Coding PHP für Fortgeschrittene und Experten 2 01.08.2003 15:03:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:39:59 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.


© 2001-2018 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt