Используйте parse_url () и parse_str () .
(Вы можете использовать регулярные выражения практически для чего угодно, но в них очень легко сделать ошибку, поэтому, если есть функции PHP специально для того, что вы пытаетесь выполнить, используйте их.)
parse_url берет строку и разрезает ее на массив, содержащий кучу информации. Вы можете работать с этим массивом или указать нужный элемент в качестве второго аргумента. В данном случае нас интересует запрос, то есть PHP_URL_QUERY
.
Теперь у нас есть запрос, который есть v=C4kxS1ksqtw&feature=relate
, но нам нужна только часть после v=
. Для этого мы обращаемся к тому, parse_str
что в основном работает как GET
на струне. Он берет строку и создает переменные, указанные в строке. В этом случае $v
и $feature
создается. Нас только интересует $v
.
На всякий случай вы не хотите просто хранить все переменные из parse_url
в вашем пространстве имен (см. Комментарий mellowsoon). Вместо этого храните переменные как элементы массива, чтобы вы могли контролировать, какие переменные вы сохраняете, и вы не могли случайно перезаписать существующую переменную.
Собирая все вместе, получаем:
<?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'];
?>
Рабочий пример
Редактировать:
хе-хе - спасибо Чарльзу. Это меня рассмешило, я никогда раньше не видел цитату Завинского:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- Джейми Завински