Как я могу прочитать n-ю строку HTML веб-страницы, используя PHP?

Я видел этот вопрос для файлов, но по какой-то причине они никогда не будут работать с веб-страницей.

Я пытаюсь использовать file_get_contents чтобы получить содержимое веб-страницы (не заботится о скорости, поэтому я не использую cURL), а затем я хочу напечатать определенную строку.

Можете ли вы дать мне самый простой способ сделать это, так как я создаю API, который извлекает определенные строки из нескольких веб-страниц.

Или я могу найти и распечатать строку, содержащую определенную строку? Например, строка, которая начинается с «Foo» (если есть только одна строка, содержащая это).

0

Решение

function readStrLine($str, $n) {
$lines = explode(PHP_EOL, $str);
return $lines[$n-1];
}

$file = file_get_contents('http://google.pl');

echo readStrLine($file, 10);

Вы можете разбить строку на новую строку, тогда вы получите массив строк, которые начинаются с индекса 0 (это первая строка)

РЕДАКТИРОВАТЬ
Альтернативный способ с Tidy HTML

function readHtmlLine($html, $n) {
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($html);
$dom->formatOutput = true;
$lines = explode(PHP_EOL, $dom->saveHTML());
return $lines[$n-1];
}

$file = file_get_contents('http://google.pl');

echo readHtmlLine($file, 10);
4

Другие решения

Как я могу прочитать определенную строку веб-страницы? [PHP]

Можете ли вы дать мне самый простой способ сделать это, так как я создаю API, который извлекает определенные строки из нескольких веб-страниц.

Или я могу найти и распечатать строку, содержащую определенную строку?

Пример HTML-файла:

file.html

<html>
<head><title>File</title></head>
<body>
<p>Nancy is my name</p>
<p>James is my name</p>
<p>Foo is my name</p>
<p>Bob is my name</p>
</body>
</html>

простая функция php:

function checkFile( $file, $keyword ) {

// open file for reading
$handle = @fopen( $file, 'r' );

// check to make sure handle is valid
if( $handle ) {

// traverse file line by line
while( ($line = fgets($handle)) !== false ) {

// search for specific keyword no matter what case is used i.e. foo or Foo
if( stripos($line, $keyword) === false ) {
// string not found, continue with next iteration
continue;
} else {

// keyword was found

// close file
fclose($handle);

// return line
return $line;
}
}
}
}

$result = checkFile( 'file.html', 'foo' );

echo $result;

Выходы: <p>Foo is my name</p>

1

По вопросам рекламы [email protected]