kostenloser Webspace werbefrei: lima-city


URL prüfen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hallo zusammen,

    ich habe ein Formular, bei dem man einen Link angeben kann. Gibt es einen einfachen weg zu prüfen, ob der Link zu einer bestimmten Seite gehört, wie z.B. Youtube? Wenn man mit strpos prüft ob der String "Youtube" in dem Link vorhanden ist, ist das ja zu ungenau, da das Wort "Youtube" ja auch ein Parameter sein kann und aber eigentlich auf eine andere Seite weitergeleitet wird.

    Man könnte ja den Link String in verschiedene Teile aufteilen, aber da müsste man ja ziemlich viele Fälle beachten. Manche geben zum Beispiel das "http://" nicht an oder manche lassen das "www." weg usw. Gibt es also einen einfacheren Weg um das zu prüfen?

    Viele Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Dafür gibt es unterschiedliche Herangehensweisen, auch abhängig von der verwendeten Programmiersprache. Bei PHP würde sich z.B. die Funktion parse_url anbieten, die zerlegt Dir die URL in Teile, sodass Du z.B. die Domain einzeln überprüfen kannst. Ein anderer Weg wäre ein Regex, was z.B. so aussehen könnte:
    ^(https?:\/\/)?(www\.)?domain\.tld\/?

    Das ist ungetestet und einfach mal aus dem Gedächtnis hingeschrieben, keine Garantie, dass das funktioniert und/oder optimal ist!

    Beitrag zuletzt geändert: 21.2.2016 17:29:47 von davidlw
  4. naja ich würde sagen, dass du nie sicher weißt wohin ein link dich führt. Du sagst, dass strpos zu ungenau ist aber du kannst das ziel da schon recht genau eingrenzen. Du kannst ja z.b. nicht nur prüfen ob "youtube" vorkommt, sondern vielmehr ob "youtube.", ".youtube" oder "/youtube" im link vorkommt. Eventuell noch das selbe für die youtube Weiterleitung (weis nicht wie die genau ist, glaube youtu.be")
    glaube damit grenzt du es dann doch recht genau ein.
  5. Ich würde die RegExp so umformen:
    ^(https?:\/\/)?([^\.\/\?\#]\.)*domain\.tld([\/\#\?].*)?$

    oder für Seiten, die verschiedene TLDs haben (z.B. youtube.com, youtube.de, etc.)
    ^(https?:\/\/)?([^\.\/\?\#]\.)*domain\.[^\.\/\?\#]{2,}([\/\#\?].*)?$

    Erklärung:
    Durch
    ([^\.\/\?\#]\.)*
    statt
    (www\.)?
    werden auch alle Subdomains mit abgedeckt (falls erwünscht).

    ([\/\#\?].*)?$
    stellt sicher, dass das gefundene Ergebnis nicht nur eine Subdomain ist (z.B. youtube.com.example.org)
  6. bastians-seite

    Kostenloser Webspace von bastians-seite

    bastians-seite hat kostenlosen Webspace.

    Ich würde dir trotzdem die Methode empfehlen, denn es sind gar nicht so viele Fälle.

    Z.B.

    <?php
    
    if ($x!=str_replace("http://youtube.com","",$x) || $x!=str_replace("http://www.youtube.com","",$x) || $x!=str_replace("http://www.youtube.com/","",$x || $x!=str_replace("http://youtube.com/","",$x)
    || $x!=str_replace("https://www.youtube.com","",$x) || $x!=str_replace("https://www.youtube.com/","",$x)
    || $x!=str_replace("https://youtube.com","",$x) || $x!=str_replace("http://www.youtube.com/","",$x)
    || $x!=str_replace("http://www.youtu.be","",$x) || $x!=str_replace("youtu.be","",$x)) {
    
    // YouTube-Link enthalten
    
    }
    
    ?>


    Na ja, sehr elegant ist es ja nun wirklich nicht, aber schwer ist's ja auch nicht :) Nun, dass hier jetzt nur als
    Vorschlag.

    -lg
  7. bastians-seite schrieb:
    Ich würde dir trotzdem die Methode empfehlen, denn es sind gar nicht so viele Fälle.
    und warum würdest du die empfehlen? Ich sehe keinerlei Vorteile, eigentlich nur Nachteile. Es ist mehr Code, das str_replace ist nichts,was man in erster Linie mit dem Suchen nach Strings in Verbindung bringt und der Code überprüft auch nicht, ob der String mit dem YouTube Zeug anfängt.

    Wenn Du es lesbarer als ein RegEx willst, macht die parse_url Funktion, wie schon bereits von mir angesprochen, mehr Sinn. Andernfalls ist ein RegEx wesentlich kürzer als Dein Weg und wenn Du vllt noch nen Kommentar davor schreibst meiner Meinung nach auch mindestens genauso gut verständlich.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!