2016-05-11 20 views
1

Ich möchte sicherstellen, dass der Link aus dem gewählten sozialen Typ ist. Hilfe !!Url Validierung mit preg_match

$socialType = 'youtube'; 
    $link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M'; 

    if (!preg_match("/^(http|https):\\/\\/[a-z0-9_]+$socialType*\\.[_a-z]{2,5}"."((:[0-9]{1,5})?\\/.*)?$/i",$link)) 
    { 
     return Response::json('inValid'); 
    } 
    { 
     return Response::json('Valid'); 
    } 
+0

Youtube hat auch die 'youtu.be' Domain und https://youtu.be/DBK-Cy9ge4M verweist auf dasselbe Video, das Sie gepostet haben. Du solltest diese Videos auch erlauben (imho). – Arjan

Antwort

0

wird es zwei Optionen sein as- 1. mit preg_match -

$subject = "https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M"; 
$pattern = '/^youtube/'; 
preg_match($pattern, substr($subject,7), $matches); 
print_r($matches); 

2. mit strops als (Ruslan Osmanov) -

$socialType = 'youtube'; 
$link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M'; 
if (strpos($link, $socialType) !== false) { 
    return Response::json('Valid'); 
} 
0

Sie können einfach überprüfen, ob der Link Ihren String enthält strpos mit:

$link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M'; 
$type = 'youtube'; 

if (strpos($link, $type) !== false) { 
    // passed 
} 

Oder mit einem einfachen regulären Ausdruck verwenden, wenn Sie wollen strengere Kontrolle:

$reg_type = preg_quote($type, '/'); 

if (preg_match("/^https?:\/\/(www\.)?$reg_type/", $link)) { 
    // passed 
} 

Hinweis, Sie sollten Werte, die an den regulären Ausdruck übergeben wurden, mit preg_quote ausschließen.

Das Muster sollte gerade genug sein. Nicht überkomplizieren. Es ist im Allgemeinen unmöglich, einen perfekten regulären Ausdruck zu schreiben. Zum Beispiel ist es sehr unwahrscheinlich, HTTP (S) -Protokoll Präfix + optional "www." + "youtube." in einer URL, die nicht zu Youtube gehört.

Auch würde ich nicht erwarten, die Antwort mit einem universellen regulären Ausdruck für alle Arten von sozialen Netzwerken zu bekommen. Jeder hat sein eigenes Muster.