Используйте 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'];
// Output: C4kxS1ksqtw
?>
Рабочий пример
Edit:
хе-хе - спасибо, Чарльз. Это заставило меня смеяться, я никогда не видел цитату Завински раньше:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- Джейми Завински