Заменить часть URL с php - PullRequest
       1

Заменить часть URL с php

0 голосов
/ 15 декабря 2010

Привет! У меня есть простой вопрос, с которым я борюсь, надеюсь, вы, ребята, можете посмотреть. У меня есть поле ввода, где пользователи вставляют ссылки на YouTube, и ваша обычная страница работает нормально, например:

youtube.com/watch?v=c3sBBRxDAqk

это watch?v=11characters отлично работает

, но если пользователи вводят что-либо, кроме приведенного выше примера, например:

youtube.com/watch?v=tC0E1id4raw&feature=topvideos
//or
youtube.com/watch?v=smETLCCPTVo&feature=aso

есть ли способ взять 2 вышеуказанных URL и удалить любые символы после w atch?v=11characters?

так по сути, включите это

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos"
* +1015 * в
youtube.com/watch?v=tC0E1id4raw removing & and onwards

Мне пришлось удалить бит http из-за предотвращения спама

Есть ли простой способ сделать это?

Ответы [ 3 ]

4 голосов
/ 15 декабря 2010
$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos";

list($keep, $chuck) = explode('&', $url);

echo $keep;
0 голосов
/ 15 декабря 2010

Нет необходимости в регулярном выражении:

$parts = parse_url($url);
$params = array();
parse_str($parts['query'], $params);

Если у вас установлен PECL pecl_http:

$url = http_build_url($url, 
                      array('query' => 'v='. $params['v']), 
                      HTTP_URL_REPLACE | HTTP_URL_STRIP_FRAGMENT);

Или без pecl_http:

$url = $parts['scheme'] . $parts['host'] .  $parts['path'] .  '?v=' . $params['v'];

Это более устойчиво к изменениям порядка параметров запроса.

Ссылка: parse_url, parse_str, http_build_url

0 голосов
/ 15 декабря 2010

Один из способов сделать это - использовать взорваться :

$url = "youtube.com/watch?v=tC0E1id4raw&feature=topvideos";

$newurl = explode("&", $url);

Все до «&» будет в $ newurl [0], а все после него будет в $ newurl [1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...