как работи file_get_contents

r_a_s

Registered
Как работи тази функция file_get_contents()
Код:
<?php
// Прочита 14 знака, започвайки от 21-ия знак
$section = file_get_contents('http://сайтта', NULL, NULL,  21, 14);
echo $section;
?>
Като я напиша ми дава грешка при 4-тия параметър защо така?
И мога ли примерно да взема код примерно от 10 до 50 ред?

Warning: file_get_contents() [function.file-get-contents]: stream does not support seeking in E:\xampp\htdocs\sa.php on line 3

Warning: file_get_contents() [function.file-get-contents]: Failed to seek to position 21 in the stream in E:\xampp\htdocs\sa.php on line 3
 
Тhe offset where the reading starts on the original stream.

Seeking (offset) is not supported with remote files. Attempting to seek on non-local files may work with small offsets, but this is unpredictable because it works on the buffered stream.

Файла, който отваряш не е на локалния сървър и параметъра offset не бачка.

Или както казва един потребител тука из форума... документация е на същия адрес. :)

http://bg.php.net/manual/en/function.file-get-contents.php
 
Ще допълня отговора на @rombeca.
Като за начало, file_get_contents е много лош инструмент (бавен, без особени възможности за конфигурация) за взимане на информация от отдалечен сървър. По-добрият вариант е да използваш cURL (по-бърз, по-лек, по-гъвкав...) и специално за твоя случай substr предполагам ще ти свърши работа.
Ето пример:
PHP:
<?php
$url = 'http://yahoo.com'; // Адреса, който ще crawl-ваме
$c = curl_init(); // инициализираме cURL

curl_setopt_array($c, array(
     // Подаваме адреса
    CURLOPT_URL => $url,
    // Задаваме TRUE за да следва Location: ... хедъри
    CURLOPT_FOLLOWLOCATION => TRUE,
    // Максимум колко Location редиректа да проследи
    CURLOPT_MAXREDIRS => 10,
    // Задаваме FALSE за да премахме хедърите в отговора
    CURLOPT_HEADER => FALSE,
    // Съдържанието на страницата се връща от curl_exec, иначе директно се изважда на екрана
    CURLOPT_RETURNTRANSFER => TRUE,
    // Когато статус кода е над 400, да отчита заявката като невалидна
    CURLOPT_FAILONERROR => TRUE
));

// Изпълняваме заявката
$content = curl_exec($c);

// Проверяваме за грешка
if ($content !== FALSE) {
   // Изваждаме съдържанието
    echo substr($content, 20, 14);
}
else {
    // Показваме грешката
    echo 'Грешка: '.curl_error($c);
}
:)
 

Back
Горе