Use parse_url () e parse_str () .
(Você pode usar expressões regulares para praticamente qualquer coisa, mas elas são muito fáceis de cometer erros; portanto, se houver funções PHP especificamente para o que você está tentando realizar, use-as.)
parse_url pega uma string e a corta em uma matriz que possui várias informações. Você pode trabalhar com essa matriz ou especificar o item que deseja como segundo argumento. Nesse caso, estamos interessados na consulta, que é PHP_URL_QUERY
.
Agora temos a consulta, que é v=C4kxS1ksqtw&feature=relate
, mas queremos apenas a parte depois v=
. Para isso, passamos ao parse_str
que basicamente funciona como GET
uma string. Ele pega uma string e cria as variáveis especificadas na string. Nesse caso $v
e $feature
é criado. Estamos interessados apenas $v
.
Para ser seguro, você não deseja apenas armazenar todas as variáveis parse_url
no espaço para nome (consulte o comentário de mellowsoon). Em vez disso, armazene as variáveis como elementos de uma matriz, para que você tenha controle sobre quais variáveis está armazenando e não poderá sobrescrever acidentalmente uma variável existente.
Juntando tudo, temos:
<?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
?>
Exemplo de trabalho
Editar:
hehe - obrigado Charles. Isso me fez rir, nunca vi a citação de Zawinski antes:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- Jamie Zawinski