2010-12-15 9 views
0

Hey da! Ich habe eine einfache Frage, mit der ich mich abmühen muss, ich hoffe, ihr könnt es euch ansehen. Ich habe ein Eingabefeld, in dem Benutzer in YouTube-Links setzen würde und Ihre typische einzelne Seite funktioniert gut, zum Beispiel:Ersetzen Sie einen Teil einer URL mit PHP

youtube.com/watch?v=c3sBBRxDAqk 

diese watch?v=11characters funktioniert

aber wenn die Benutzer eingibt, etwas anderes als das obige Beispiel wie:

youtube.com/watch?v=tC0E1id4raw&feature=topvideos 
//or 
youtube.com/watch?v=smETLCCPTVo&feature=aso 

gibt es eine Möglichkeit, die 2 oben URLs zu nehmen und alle Zeichen nach dem w atch?v=11characters entfernen?

so im Wesentlichen, schalten diese

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos" 

in

youtube.com/watch?v=tC0E1id4raw removing & and onwards 

ich wegen Spam-Prävention

das http-Bit zu entfernen hatte, ist es eine einfache Möglichkeit, dies zu tun?

+0

http://php.net/manual/en/function.parse-url.php und http://www.php.net/manual/en/function. parse-str.php existiert dafür –

Antwort

0

Eine Möglichkeit, dies zu tun, ist mit explode:

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"; 

$newurl = explode("&", $url); 

alles vor dem "&" in $ newurl sein wird [0], und alles, nachdem es in $ newurl sein wird [1] .

+0

Dies funktioniert am besten in meiner gegebenen Situation, ich glaube, ich habe explodieren lol vergessen, danke für die Hilfe! – user543468

4
$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"; 

list($keep, $chuck) = explode('&', $url); 

echo $keep; 
+0

Ich schrieb eine Antwort, die strpos verwendet, aber ich mag deine Antwort mehr. Upvote! – sjobe

+0

oder Sie könnten $ keep = current verwenden (explode ('&', $ url)); – fire

+0

Vielen Dank für die detaillierten Informationen! – user543468

0

Keine Notwendigkeit für regex:

$parts = parse_url($url); 
$params = array(); 
parse_str($parts['query'], $params); 

Wenn Sie PECL pecl_http installiert sein:

$url = http_build_url($url, 
         array('query' => 'v='. $params['v']), 
         HTTP_URL_REPLACE | HTTP_URL_STRIP_FRAGMENT); 

oder ohne pecl_http:

$url = $parts['scheme'] . $parts['host'] . $parts['path'] . '?v=' . $params['v']; 

Dies ist robuster gegenüber Änderungen der Bestellung der Abfrageparameter.

Referenz: parse_url, parse_str, http_build_url

+0

Ich habe das getestet und es funktioniert, aber ich bin ein totaler Noob in PHP und ich hatte Schwierigkeiten, den Code ein bisschen zu folgen, ich muss mehr lernen! Danke = D – user543468

Verwandte Themen