Use 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
?>
Working example
Edit:
хехе - спасибо Чарльзу. Это заставило меня смеяться, я никогда не видел цитату Завински до:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- Джейми Завински
Это может быть полезно http://stackoverflow.com/questions/9522868/how-do-i-get-a-youtube-video-id-php – 2012-04-13 13:04:06
Вы должны посмотреть мой код https://github.com/lingtalfi/ video-ids-и-thumbnails/blob/master/testvideo.php, я предоставляю функции, которые извлекают id из youtube, vimeo и dailymotion. – ling
@ling в функции getVideoThumbnailByUrl() вы использовали устаревший файл_get_contents() для Vimeo. Эта замена будет работать везде: '$ ch = curl_init(); \t curl_setopt ($ ch, CURLOPT_URL, "http://vimeo.com/api/v2/video/$id.php"); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 5); $ hash = unserialize (curl_exec ($ ch)); curl_close ($ ch); ' – jerrygarciuh