Доступ к исходному коду HTML с использованием PHP или JavaScript

Я пытаюсь получить доступ, а затем распечатать (или просто использовать) исходный код любого веб-сайта с помощью PHP. Я не очень опытен и теперь думаю, что мне, возможно, понадобится использовать JS для этого. До сих пор код ниже обращается к исходному коду веб-страницы и отображает веб-страницу... Вместо этого я хочу показать исходный код. По сути, и самое главное, я хочу, чтобы иметь возможность хранить исходный код в какой-то переменной, поэтому я могу использовать его позже. И, в конце концов, прочитайте его по очереди - но это можно решить позже.

$url = 'http://www.google.com';
function get_data($url) 
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
echo get_data($url); //print and echo do the same thing in this scenario.

Ответ 1

Рассмотрим file_get_contents() вместо curl. Затем вы можете отобразить код на своей странице, заменив каждую открывающую скобку (<) на &lt; и затем выведя ее на страницу.

<?php
$code = file_get_contents('http://www.google.com');
$code = str_replace('<', '&lt;', $code);
echo $code;
?>

Edit:
Похоже, что завиток на самом деле быстрее, чем FGC, поэтому игнорируйте это предложение. Остальная часть моего поста все еще стоит.:)

Ответ 2

Вы должны попытаться напечатать результат между тегами <pre></pre>;

echo '<pre>' . get_data($url) . '</pre>';

Ответ 3

Я переписал вашу функцию. Функция может возвращать источник с линиями или без строк.

<?php 
function get_data($url, $Addlines = false){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    $content = curl_exec($ch);
    $content = htmlspecialchars($content); // Prevents the browser to parse the html

    curl_close($ch);

    if ($Addlines == true){
        $content = explode("\n", $content);
        $Count = 0;
        foreach ($content as $Line){
            $lines = $lines .= 'Line '.$Count.': '.$Line.'<br />';
            $Count++;
        }
        return $lines;
    } else {
        $content = nl2br($content);
        return $content;
    }
}


echo get_data('https://www.google.com/', true); // Source code with lines
echo get_data('https://www.google.com/'); // Source code without lines
?>

Надеюсь, он вас по пути.

Ответ 4

Добавить заголовок Content-Type: text/plain

header("Content-Type: plain/text"); 

Ответ 5

Используйте htmlspecialchars() в php для печати исходного кода.

В своем коде используйте

return htmlspecialchars($data);

вместо

return $data;