<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
body {
margin: 0;
padding: 0;
font-size: 0;
background: #444
}
hr {
margin: 1rem 0;
}
img {
min-width: 50px;
max-width: 33%;
max-height: 250px;
background: white;
margin: 5px;
border: 1px solid #aaa;
image-rendering: pixelated;
}
a {
color: white;
display: inline-block;
font-size: 16px;
margin: 0.25rem 1rem;
}
a:visited {
color: pink;
}
input {
margin: 10px 15px;
color: white;
padding: 4px;
font-weight: bold;
font-size: 14px;
background: #888;
}
b {
font-size: 14px;
color: yellow;
}
::placeholder {
color: #bbb;
font-style: italic;
}
</style>
</head>
<body>
<form>
<input name=u placeholder="new url">
</form>
<?php
$parts = explode('?', $_GET['u']);
$URL = $parts[0];
$data = file_get_contents($URL);
preg_match_all('/((?<=href=")[^"]*)/i', $data, $matches);
$parsed = parse_url($URL);
$baseurl = $parsed["scheme"] . "://" . $parsed["host"];
$matches = $matches[0];
$base = trim($URL, '/');
$images = [];
$links = [];
$other = [];
foreach($matches as $img) {
$parts = explode('.', strtolower($img));
$ext = array_pop($parts);
if ($img[0] == '/') {
$use = $baseurl;
} else {
$use = "${base}/";
}
if(in_array($ext, ['png','gif','svg','jpeg','jpg','bmp'])) {
$images[] = "<img title='$img' data-src=$use$img>";
} else if ($img[0] != '?') {
if ($img[-1] == '/') {
$link = "$use/$img";
$links[] = "<a href=?u=$link>$img</a>";
} else {
$other[] = "<a href=$use$img>$img</a>";
}
}
}
foreach([$links, $images, $other] as $w) {
echo implode("\n", $w) . "<hr>";
}
echo "<b>${_GET['u']}</b><br/>" . implode("\n", $links) . "<hr>";
?>
<script>
var ix = -1;
function fn() {
ix++;
if(!document.images[ix]) return;
document.images[ix].onload = document.images[ix].onerror = fn;
document.images[ix].src = document.images[ix].dataset.src;
}
fn();
</script>