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=CuE88oVCVj.

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

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;