Php удаляет одну букву "g" из моей функции rtrim, но не другие символы - PullRequest
2 голосов
/ 11 июня 2010

Я пытаюсь обрезать некоторые 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 ]

3 голосов
/ 11 июня 2010

Второй аргумент 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;
1 голос
/ 11 июня 2010

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

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