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 ответа:
Нет, это
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;