Php удаляет одну букву "g" из моей функции rtrim, но не другие символы

Я пытаюсь обрезать некоторые URL-адреса YouTube, которые я читаю из списка воспроизведения. Первые 3 работают нормально, и все их URL либо заканчиваются заглавными буквами или цифрами, но этот, который заканчивается строчными буквами g, усекается на один символ короче, чем остальные.

    for ($z=0; $z <= 3; $z++)
  {
   $ythref2 = rtrim($tubeArray["feed"]["entry"][$z]["link"][0]["href"], '&feature=youtube_gdata');

URL является http://www.youtube.com/watch?v=CuE88oVCVjg&feature=youtube_gdata.. и это должно быть урезано до.. http://www.youtube.com/watch?v=CuE88oVCVjg но вместо этого это выходит как http://www.youtube.com/watch?v=CuE88oVCVj,

Я думаю, что это может быть символ амперсанда, но я не уверен.

2 ответа

Решение

Нет, это g во втором аргументе. rtrim() не удаляет строку с конца, она удаляет любые символы, указанные во втором аргументе. использование preg_replace() или же substr() вместо.

Второй аргумент для rtrim - это список символов для удаления, а не строка для удаления.

Возможно, вы захотите использовать str_replace или использовать parse_url и parse_str для получения массивов компонентов URL-адреса и компонентов строки запроса, например "v".

Пример непроверенного кода:

$youtube_url = 'http://www.youtube.com/watch?v=CuE88oVCVjg&feature=youtube_gdata';
$url_bits = parse_url($youtube_url);
$query_string = array();
parse_str($url_bits['query'], $query_string);
$video_identifier = $query_string['v']; // "CuE88oVCVjg"
$rebuilt_url = 'http://www.youtube.com/watch?v=' . $video_identifier;
Другие вопросы по тегам