Извлечение текста между значениями в текстовом файле с помощью php

#php #regex

#php #регулярное выражение

Вопрос:

Я пытаюсь извлечь значения между eng_tid

и eng_data для http://fdguirhgeruih.x10.mx/html.txt и я продолжаю получать ошибки T-строки.

почему я продолжаю получать ошибки

 <? php

    //First, open the file. Change your filename
    $file = "http://fdguirhgeruih.x10.mx/html.txt";
    $word1='tid';
    $word2='data';


    $handle = fopen($file, "r");
    $contents = fread($handle, filesize($file));
    fclose($handle);

    $between=substr($contents, strpos($contents, $word1), strpos($contents, $word2) - strpos($contents, $word1));

    echo $between; 


    ?>
 

Комментарии:

1. Пожалуйста, всегда указывайте точные сообщения об ошибках, которые вы получаете. Спасибо!

Ответ №1:

ОБНОВЛЕНИЕ после просмотра сообщений об ошибках…

Вместо fread() того, чтобы пытаться использовать размер в байтах вашего целевого файла, вы можете просто использовать file_get_contents() для извлечения удаленного файла. Ваша ошибка связана с тем, что PHP хочет прочитать размер файла, как если бы он был локальным, но это удаленный файл по HTTP. filesize() сообщает 0 и ошибка. Вместо этого выполните

 // Don't do this...
//$handle = fopen($file, "r");
//$contents = fread($handle, filesize($file));
//fclose($handle);

// Instead do this...
$contents = file_get_contents($file);
 

Комментарии:

1. @RacquelAitken Вам нужно опубликовать свои ошибки и больше вашего кода, если это не все.

2. Предупреждение: filesize() [функция. размер файла]: ошибка статистики для fdguirhgeruih.x10.mx/html.txt в /home/regerger/public_html/extract.php в строке 10 Предупреждение: fread() [функция. fread]: параметр длины должен быть больше 0 в /home/regerger/public_html/extract.php в строке 10

3. @RacquelAitken Теперь я понимаю — смотрите Мое обновление и используйте file_get_contents() вместо fopen()/fread()

4. <код><?php //Сначала откройте файл. Измените имя файла $file = » fdguirhgeruih.x10.mx/html.txt «; $word1=’eng_tid’; $word2=’eng_type’; $contents = file_get_contents($file); $between=substr($contents, strpos($contents, $word1), strpos($contents, $word2) — strpos($contents, $word1)); echo $between; ?></code>

5. @RacquelAitken Запустив этот код, я получаю обратно длинную строку из файла.