2015-05-11 2 views
1

Я хочу изменить стандартные ссылки для видео YouTube (например: https://www.youtube.com/watch?v=zVzhpkFBFP8), хранящиеся в моей базе данных, для встраивания URL-адресов (например: https://www.youtube.com/embed/zVzhpkFBFP8) с использованием preg_replace. Это мой код:Использование preg_replace для изменения ссылок на YouTube.

<?php 
    $Link = getuser($my_id, 'YoutubeLink'); 
    $LinkNew = preg_replace("/watch?v=*/","embed*/","$Link"); 
    echo "$LinkNew" ?> 

Но он не работает. Я, наверное, делаю что-то глупое, но я новичок в php, поэтому любая помощь приветствуется.

ответ

2

Не нужно использовать preg_replace для чего-то подобного, в котором нет рисунка. Поскольку watch?v= всегда один и тот же, вместо этого используйте str_replace('watch?v=', 'embed/', $Link);

+0

Это сработало, спасибо! –

0

Ваше регулярное выражение как это не работает, потому что ? является специальным символом в регулярном выражении, поэтому вам нужно его избежать. Значок вопроса делает предшествующий символ необязательным. Чтобы избежать просто добавить обратную косую черту перед этим \?.

* также используется несколько некорректно. Звездочка - это квантификатор, поэтому вы указываете нулевые или более равные знаки. Если вы хотите все после знака равенства, вы должны сделать .*. Это получит любой другой символ, потому что . - это любой символ и в паре с * - это все. Вы на самом деле не хотите этого делать, потому что вы не группируете это, а заменитель просто удалит его. Если вы должны были группировать это, вы можете использовать это значение позже взамен, используя $1. Вот напишите на этом http://www.regular-expressions.info/brackets.html.

<?php 
    $Link = getuser($my_id, 'YoutubeLink'); 
    $LinkNew = preg_replace("/watch\?v=/","embed/", $Link); 
    echo "$LinkNew"; ?> 

Как @ V13Axel указал, хотя это можно сделать так же легко, используя str_replace.

Смежные вопросы