2011-12-16 1 views
1

У меня есть URL-адреса YouTube, хранящиеся в базе данных, которые мне нужно переписать.Rewrite Youtube URL

Они хранятся в этом формате:

$http://youtu.be/IkZuQ-aTIs0 

мне нужно, чтобы они переписали выглядеть следующим образом:

$http://youtube.com/v/IkZuQ-aTIs0 

Эти значения сохраняются в переменной $ тип видеозаписи

Я называю переменную следующим образом:

$<?php if ($video['VideoType']){ 
$echo "<a rel=\"shadowbox;width=700;height=400;player=swf\" href=\"" . $video['VideoType'] . "\">View Video</a>"; 
$}?> 

Как их переписать?

Благодарим за помощь.

ответ

5

Вы хотите использовать preg_replace функцию:

Что-то вроде:

$oldurl = 'youtu.be/blah'; 
$pattern = '/youtu.be/'; 
$replacement = 'youtube.com/v'; 
$newurl = preg_replace($pattern, $replacement, $string); 
1

Вы можете использовать регулярное выражение, чтобы сделать это для вас. Если у вас есть ТОЛЬКО URL-адреса youtube, хранящиеся в вашей базе данных, тогда было бы достаточно принять участие после последней косой черты «IkZuQaTIs0» и поместить ее в атрибут src после «http://www.youtube.com/».

Для этого простого решения, сделать что-то вроде этого:

<?php 
    if ($video['VideoType']) { 
     $last_slash_position = strrpos($video['VideoType'], "/"); 
     $youtube_url_code = substr($video['VideoType'], $last_slash_position); 
     echo "<a rel=\"shadowbox;width=700;height=400;player=swf\" 
       href=\"http://www.youtube.com/".$youtube_url_code."\"> 
       View Video</a>"; 
    } 
?> 

Я не могу проверить это на данный момент, может быть, вы можете попробовать поэкспериментировать с позиции последнего слеша встречаемости и т.д. Вы также можете посмотреть на определения функций:

http://www.php.net/manual/en/function.substr.php

http://www.php.net/manual/en/function.strrpos.php

Однако быть в курсе представление. Создайте сценарий, который подготавливает вашу базу данных и преобразует каждый URL-адрес или хранит короткий и длинный URL-адрес в каждой записи. Потому что регулярные выражения в представлении никогда не являются хорошей идеей.

UPDATE: было бы даже лучше хранить ТОЛЬКО идентификатор/код URL-адреса youtube в базе данных для каждой записи, поэтому в примере это будет IkZuQ-aTIs0.

+0

Благодарим за отзыв. Я получаю эту ошибку в строке с «href =» ... Ошибка анализа: ошибка синтаксиса, неожиданная T_CONSTANT_ENCAPSED_STRING – cpcdev

+0

Извините за это, я не могу проверить это здесь. Кажется, что опечатка. Попробуйте использовать отредактированный код – CppChris

+0

Теперь он работает! Большое вам спасибо :) Happy Holidays! – cpcdev