Wie kann ich einfach überprüfen, ob ein string eine gültige IP in PHP?
Verwendung von PHP, wie kann ich überprüfen, dass ein string eine gültige IP?
Beispiele für gültige strings:
- 192.158.5.95
- 121.212
- 12.12.12.204
Beispiele für ungültige Zeichenfolgen:
- 121
- 10 12 12 (keine Punkte)
Meinem aktuellen script verwendet diesen code, aber dies ist nicht ausreichend für meine Bedürfnisse:
if(strpos($input, '.') !== false)
{
//There is a period
}
else
{
//No Period
}
Als solche, kann jemand bitte beraten, wie kann ich überprüfen, dass ein string eine gültige IP?
Bitte schreiben Sie Ihre Frage. Es ist gramattically Kauderwelsch im moment, und würde auch profitieren von der Nutzung des rich-text-Formatierung Funktionen (z.B. code-Formatierung). Außerdem, mit einem Auslassungszeichen ("...") setzt Voraus, Ungeduld, was bedeutet, Berechtigung, so als wenn wir schon dein problem gelöst für die, die Sie jetzt durch. Vielleicht möchten Sie zu überdenken.
ya wirklich ich m neu für diese Website, so dass ich nicht mehr wissen, aber ich denke, es ist eine ausgezeichnete Website
wenn ich löschen möchte meinen, diese Frage dann, wie es ist posible bcause ich habe eine vns-für diese Frage
Sie nicht löschen Sie Ihre Frage, wenn Sie eine Antwort bekommen, lassen Sie es für andere zu nutzen wissen.
Fragen, bekommen Sie Antworten, löschen Sie --- ist nicht der richtige Weg, um sich hier Verhalten 😉
ya wirklich ich m neu für diese Website, so dass ich nicht mehr wissen, aber ich denke, es ist eine ausgezeichnete Website
wenn ich löschen möchte meinen, diese Frage dann, wie es ist posible bcause ich habe eine vns-für diese Frage
Sie nicht löschen Sie Ihre Frage, wenn Sie eine Antwort bekommen, lassen Sie es für andere zu nutzen wissen.
Fragen, bekommen Sie Antworten, löschen Sie --- ist nicht der richtige Weg, um sich hier Verhalten 😉
InformationsquelleAutor Harsh | 2011-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
ist eigentlich technisch gültige IP-Adresse
0.0.0.200
. Gibt es Einschränkungen, die nicht zulassen, dass Sie verwenden Sie es im wirklichen Leben (wie viele andere), aber es immer noch eine gültige IPTatsächlich, ip2long gibt true zurück, für Zeichenketten wie "192.168.0355.24", das ist keine gültige ip jetzt, ist es? Dies könnte ein Fehler sein, obwohl, weil Sie mit der input-string "192.168.355.24" die Funktion gibt false zurück, als erwartet. Allerdings sollte man vorsichtig sein mit der Funktion, wie es ist. Die Antwort von iNaD bietet ein mehr solides Ergebnis.
warum ist es nicht eine gültige IP? Es IST eine gültige IP -. Danke für den downvote. Wenn Sie merken, Sie sind falsch - bitte es rückgängig zu machen. Danke. PS: auch
2130706433
ist eine gültige IP -, versuchen, ping. PPS: wenn Sie noch immer nicht glauben - öffnen Sie 0313.109.178.99 und sehen, es ist eine googleGut, filter_var filtert es aus, so dass ich denke, es muss einen Unterschied im Ergebnis, was Sie wollen, zu erwarten. Wenn eine gültige IP, kann Sie erklären, warum filter_var-filtern? Entferne ich den downvote (sobald es möglich ist, ich bin jetzt immer eine Fehlermeldung, da habe ich 1 Stunde), aber es wäre schön, wenn Ihr erklären könntet 🙂
InformationsquelleAutor zerkms
Versuchen Sie es mit filter_var
Beispiel:
Wenn man jetzt einen string wie
foo
,127.0.0.bla
oder ähnlichfilter_var
zurückfalse
. Gültige IPs wie10.1.10.10
,::1
werden als gültig betrachtet.Bemerken
Auch Sie haben zu prüfen, auf
!== false
, weilfilter_var
gibt den Wert zurück, wenn es gültig ist und denfalse
wenn es nicht (z.B.filter_var("::1", FILTER_VALIDATE_IP)
zurück::1
, nichttrue
).Flags
Könnten Sie auch einige der folgenden flags:
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)
Wenn
$ip
ist127.0.0.1
die Funktion zurückfalse
.Bemerken Ungeschickt
::1
ist ok fürFILTER_FLAG_NO_PRIV_RANGE
, aber127.0.0.1
nicht.Da entdeckte ich filter_var, die ich nicht missen. Es ist eine zuverlässige Art und Weise (soweit ich das sagen kann) zu validieren, IPs, E-Mail-Adressen etc.
Dies funktionierte gut für mich. Wünschte, es war mehr Filter für andere Netzwerk-Daten-Validierung.
InformationsquelleAutor theiNaD
Nur, falls es jemand nicht wollen, verwenden Sie die Funktion ip2long, hier ist eine einfache Funktion (Idee übernommen von einer Klasse in osTicket):
preg_match
?Es wird verwendet, um zu testen, ob jedes Teil der IP ist im richtigen Bereich.
Sie brauchen nicht eine Schwangerschaft für dieses Recht
Nein, aber es eine der Möglichkeiten, Sie können es tun.
InformationsquelleAutor Tomgrohl
iNaD tritt die Rechte, die filter_var () - version ist die beste ein - ip2long() ist wirklich nicht, dass failsave. Nur versuchen einige seltsame Dinge und sehen Sie selbst. Ich habe einen Performance-check und filter_var ist ziemlich viel schneller als die herkömmlichen regex-Versionen.
Sorry, aber dies ist nicht eine Reale Antwort, wie @php_coder_3809625 sagte. So Downvote.
InformationsquelleAutor lucido-media.de
Duplikat von meinem-Lösung 3 Jahre später...
InformationsquelleAutor Mohammad Lotfi
Wenn @Tomgrohl gebracht regexes, können Sie es in einer Zeile:
Erklärung:
Online-tester: https://regex101.com/r/eM4wB9/1
Hinweis: es entspricht nur der ipv4 -
InformationsquelleAutor machineaddict