eregi в регулярное выражение преобразования при загрузке файла YouTube - PullRequest
0 голосов
/ 23 января 2012

Я использую этот код для загрузки видео с вашей трубки (это файл robot.php, используемый в процессе загрузки)

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

require_once('lib/youtube.lib.php');
if(eregi('youtube.com|localhost',$_GET['url'])){
    if(!eregi('www.',$_GET['url'])){
        $_GET['url'] = str_replace('http://','http://www.',$_GET['url']);
    }
    list($video_id,$download_link) = get_youtube($_GET['url']);
            ?>
    <p>
    <img src="http://img.youtube.com/vi/<?php echo trim($video_id);?>/1.jpg" alt="Preview 1" class="ythumb" />
    <img src="http://img.youtube.com/vi/<?php echo trim($video_id);?>/2.jpg" alt="Preview 2" class="ythumb" />
    <img src="http://img.youtube.com/vi/<?php echo trim($video_id);?>/3.jpg" alt="Preview 3" class="ythumb" />
    </p>
    <p>
    <a href="<?php echo trim($download_link);?>" class="ydl" title="Download as FLV">Download FLV</a>
    <a href="<?php echo trim($download_link);?>&fmt=18" class="ydl" title="Download as MP4">Download MP4</a>
    <a href="<?php echo trim($download_link);?>&fmt=17" class="ydl" title="Download as 3GP">Download 3GP</a>
    </p>
    <?php
}
else{
    die('<span style="color:red;">Sorry, the URL is not recognized..</span>');
}
?>

запустив это, я получаю ошибку

устарело: функция eregi () устарела в D: \ wamp \ www \ u \ code \ robot.php в строке 6

и строка 6 -

если (eregi ( 'youtube.com | локальный', $ _ GET [ 'URL']))

поиск переполнения стека, который я получил

if (!function_exists('eregi')) {
        function eregi($find, $str) {
            return stristr($str, $find);
        }
    }

но я не уверен, как его использовать? где я должен это разместить?

Может ли кто-нибудь помочь мне в этом? Как обновить этот код, чтобы соответствовать регулярному выражению и удалить ошибки?

спасибо ..

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Начиная с PHP 5.3.0, расширение POSIX Regex устарело в пользу расширения PCRE.

Краткий обзор миграции кода POSIX regex см. В http://php.net/reference.pcre.pattern.posix (ereg*) использовать функции PCRE (preg_*), необходимые изменения в ваших регулярных выражениях и ограничения обоих расширений.


Кроме того, вы не должны использовать код, который вы нашли.Ошибка PHP говорит о том, что функция существует, но устарела.Код, который вы нашли, ничем не поможет.


Пример обычного "преобразования" * может выглядеть так:

POSIX if (eregi('apple|pear')) …

PCRE if (preg_match('/apple|pear/i')) …

Что было сделано?

1 голос
/ 23 января 2012

Как упомянуто salathe, функции ereg устарели, следовательно, устарело уведомление.Вместо этого используйте функцию preg_match (вы также можете скрыть показ уведомлений, но это не устранит причину, а просто скроет ее).Функция preg_match имеет немного другой синтаксис, чем eregi.

Заменить строку

if(eregi('youtube.com|localhost',$_GET['url'])){

на

if(preg_match('/youtube\.com|localhost/i',$_GET['url'])){

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...