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;