PHP использует str_replace, substr и strpos все вместе - PullRequest
2 голосов
/ 28 октября 2011

Я пытаюсь преобразовать URL-адрес видео на YouTube / Vimeo, вернуть новый URL-адрес, который можно встроить в iframe, и автоматизировать код для вставки видео.

Это работает как шарм.

$url  = "http://vimeo.com/29431603";
$orj_value = array("watch?v=", "http://vimeo.com/");
$new_value   = array("embed/", "http://player.vimeo.com/video/");
$url = str_replace($orj_value, $new_value, $url);
echo $url;

Знаете, на youtube тоже размещается ужасная строка в URL, которая начинается с &, поэтому, когда я включаю

$url = substr($url, 0, strpos($url, "&")); 

до

echo $url;

он удаляет ненужную часть URL-адреса YouTube. Но тогда код vimeo, который не имеет & inside, просто ничего не возвращает. Кажется, после добавления новой строки, код хочет видеть & в URL; в противном случае $ url var отображает пустой экран.

2- Для ежедневного движения мне нужно раздеть все после первого _ Как мне отредактировать строку ниже, чтобы включить поддержку dailymotion тоже?

$url = substr($url, 0, strpos($url, "&")); 

Заранее спасибо всем, кто ответит :)

1 Ответ

1 голос
/ 28 октября 2011

Если strpos () не может найти искомый символ, он возвращает false, что может привести к путанице substr ().

Попробуйте что-то вроде этого:Ваш комментарий:

if(strpos($url, "&")) {
    $url = substr($url, 0, strpos($url, "&"));
} else if(strpos($url, "_")) {
    $url = substr($url, 0, strpos($url, "_"));
}

Есть более элегантные способы сделать это (например, REGEX), но это подойдет.Обратите внимание, что & или _ не может быть первым символом в строке, если вы хотите разрешить это добавление! == false к условию.

...