У меня есть 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/».
Для этого простого решения сделайте следующее:
<?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.