Użyj parse_url () i parse_str () .
(Możesz używać wyrażeń regularnych do prawie wszystkiego, ale bardzo łatwo jest popełnić błąd, więc jeśli istnieją funkcje PHP specjalnie dla tego, co próbujesz osiągnąć, użyj ich.)
parse_url pobiera łańcuch i dzieli go na tablicę zawierającą kilka informacji. Możesz pracować z tą tablicą lub możesz określić jeden element, który chcesz, jako drugi argument. W tym przypadku interesuje nas zapytanie, czyli PHP_URL_QUERY
.
Teraz mamy zapytanie, które jest v=C4kxS1ksqtw&feature=relate
, ale chcemy tylko część po v=
. W tym celu zwracamy się do, parse_str
które w zasadzie działa jak GET
na sznurku. Pobiera ciąg i tworzy zmienne określone w ciągu. W tym przypadku $v
i $feature
jest tworzony. Interesuje nas tylko $v
.
Aby być bezpiecznym, nie chcesz po prostu przechowywać wszystkich zmiennych z parse_url
przestrzeni nazw (zobacz komentarz Mellowsoon). Zamiast tego przechowuj zmienne jako elementy tablicy, aby mieć kontrolę nad przechowywanymi zmiennymi i nie możesz przypadkowo nadpisać istniejącej zmiennej.
Składając wszystko razem, mamy:
<?php
$url = "http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=relate";
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
echo $my_array_of_vars['v'];
// Output: C4kxS1ksqtw
?>
Przykład roboczy
Edytować:
hehe - dzięki Charles. Rozśmieszyło mnie to, nigdy wcześniej nie widziałem cytatu Zawinskiego:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- Jamie Zawinski