BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP Regex entfernt zu viel » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Regex entfernt zu viel
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Regex entfernt zu viel       Zum Anfang der Seite springen

Hallo,

mit folgender Regex versuche ich die letzte Zahl einer IP zu entfernen:
code:
1:
preg_replace('#^(.*)(\.[^\.]*)?$#', '$1',$host );


Das klappt auch. Allerdings kürzt es eine Stelle zu viel:
192.168.101.1 -> wird nun zu 192.168.10 statt 192.168.101

Sieht da jemand den Fehler?

phlox

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
04.11.2008 14:46 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

Ich weiß nicht, ob es das der Fehler ist, aber da fehlt ein Punkt:

code:
1:
2:
3:
preg_replace('#^(.*)(\.[^\.].*)?$#', '$1',$host );


außerdem würde ich die Characters etwas restriktiver parsen. In Einer IP gibt es ja nur Ziffern und Punkte smile

__________________
LAUFT! Ich spiele KILLERSPIELE!
04.11.2008 18:07 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

Hm, das ist eine Lösung. Zwar behält es jetzt auch den Punkt ("127.0.0.") aber das ist ja wurscht.

phlox

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
05.11.2008 09:18 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

      Zum Anfang der Seite springen

Das Fragezeichen in deinem Ausdruck erscheint mit zweifelhaft, aber ansonsten kann ich darin keinen auffälligen Fehler entdecken. Einfacher ginge es hingegen dennoch. Wenn du nur eine IP-Adresse hineinfütterst, dann läuft's ja darauf hinaus, dass du den letzten Block Ziffern und den letzten Punkt entfernen willst. Das geht mit folgender Abfrage:

php:
1:
$host_stripped preg_replace '#\.[0-9]+$#'''$host );


__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

05.11.2008 16:02 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

Ja, nur ist es so, das mir gethostbyname(gethostbyaddr($_SERVER['REMOTE_ADDR'])); leider nicht immer eine IP liefert, sondern z.b. soetwas:
F46C12.versanet.de
oder
Vital-36-18-171-79.vitalhosting.com

Daher filter ich auch nach anderem.

phlox

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
06.11.2008 19:11 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

Fragezeichen       Zum Anfang der Seite springen

Zitat:
gethostbyname(gethostbyaddr($_SERVER['REMOTE_ADDR']));

verwirrt
ummm phlox... nimm doch einfach nur $_SERVER['REMOTE_ADDR'], dann bekommst Du auch wirklich nur die IP-Adresse.

Der Code da oben, fragt nach dem Hostname der IP und dann wieder die IP zu diesem Hostname. Also erst ein rDNS und dann ein normales DNS.

Wofür soll das gut sein? verwirrt

__________________
LAUFT! Ich spiele KILLERSPIELE!
06.11.2008 19:55 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

Hm, das frage ich mich auch Augenzwinkern
Hatte das wohl mal irgendwo her kopiert, und seit dem nutze ich halt das.
Funktioniert ja auch in 95% der Fälle, und sonst hab ich ja auch was relativ eindeutiges.

Aber gut zu wissen :>

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
06.11.2008 20:13 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP Regex entfernt zu viel

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH