2012-05-09 1 views
1

У меня есть сайт, который позволяет пользователям загружать видео Youtube. Мне нужен PHP скрипты, которые обнаруживают, если URL YouTube присутствует, как:Strip Youtube Ссылка с сайта

givemeyoutube.com принимает пользователь на мой нормальный сайт, но если они печатают,

www.givemeyoutube.com/watch?v=OZLUa8JUR18

Как я могу отнести их к индексу моего сайта и вычеркнуть «watch? V = OZLUa8JUR18» и сохранить его как переменную?

ОБНОВЛЕНИЕ: Как это сделать, чтобы он проверял URL-адрес, и если он содержит «watch? V =», то перенаправление на другую страницу?

ответ

2

Используйте preg_match со следующим регулярным выражением

/(\/watch\?v=)([a-zA-Z0-9_-]+)/

1

PREG матч с \b(?<=v.|/)[a-zA-Z0-9_-]{11,}\b как RegExp

1

Вы можете использовать mod_rewrite правильно заботиться о запросе как watch?V=123456

в вашей .htaccess файл:

RewriteEngine On 
RewriteBase/
RewriteRule ^watch index.php [QSA] 

затем в index.php:

if(isset($_GET['v'])) { 
    // access the v parameter with $_GET['v']; 
} 
1

Я думаю, что URL переписывания бы лучше подходит для этой задачи, как вам нужно переписать URL в любом случае, чтобы убедиться, что watch открывает реальную страницу PHP.

Я хотел бы использовать что-то вроде:

RewriteEngine On 
RewriteBase/

RewriteRule ^watch.*$ /index.php?action=watch [QSA] 

Это правило будет вызывать все запросы, которые начинаются с watch быть направлен на index.php с исходной строки запроса (из-за [QSA]) и дополнительный параметр называется action с значение watch.

+0

Что они делают: RewriteCond% {REQUEST_FILENAME} -f RewriteCond% {REQUEST_FILENAME} -d #if в подкаталоге RewriteBase /subdirectory/index.php RewriteRule (+.)!? /indekx.php [L] –

+0

@Jack Brown Это необходимо, если вы переписываете все, а не только запросы, начинающиеся с 'watch'. Они удостоверяются, что существующие файлы и каталоги не переписываются, а только ссылки на страницы, которые не существуют. – jeroen