Переписать URL Youtube

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

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

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

Мне нужно, чтобы они были переписаны, чтобы выглядеть так:

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

Эти значения сохраняются как переменная $ VideoType

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

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

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

Спасибо вам за помощь.

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

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

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

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

Для этого простого решения сделайте следующее:

 <?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.