";
if (isset($_GET['q'])) { // if there's a search query, show the results for it
$query = urlencode($_GET["q"]);
$show_results = TRUE;
$search_url = "https://html.duckduckgo.com/html?q=" . $query;
// Configuration de la pagination
$results_per_page = 5; // Nombre de résultats par page
$current_page = isset($_GET['p']) ? intval($_GET['p']) : 1;
if ($current_page < 1) $current_page = 1;
$context = stream_context_create([
'http' => [
'header' => "Cache-Control: no-cache\r\n" .
"Pragma: no-cache\r\n" .
"User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 2_0 like Mac OS X) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.20\r\n"
]
]);
if (!$results_html = file_get_contents($search_url, false, $context)) {
$error_text .= "Failed to get results, sorry :(
";
}
$simple_results = $results_html;
$simple_results = str_replace('strong>', 'b>', $simple_results); //change to
$simple_results = str_replace('em>', 'i>', $simple_results); //change to
$simple_results = clean_str($simple_results);
$result_blocks = explode('', $simple_results);
$total_results = count($result_blocks) - 1;
// Calcul des paramètres de pagination
$total_pages = ceil($total_results / $results_per_page);
if ($total_pages == 0) $total_pages = 1; // Éviter la division par zéro
$start_result = ($current_page - 1) * $results_per_page + 1;
$end_result = min($start_result + $results_per_page - 1, $total_results);
// Affichage des résultats pour la page actuelle seulement
for ($x = $start_result; $x <= $end_result; $x++) {
if ($x <= $total_results && strpos($result_blocks[$x], '') === false) { //only return non ads
// result link, redirected through our proxy
$result_link = explode('class="result__a" href="', $result_blocks[$x])[1];
$result_topline = explode('">', $result_link);
$result_link = str_replace('//duckduckgo.com/l/?uddg=', '/read.php?a=', $result_topline[0]);
// result title
$result_title = str_replace("", "", explode("\n", $result_topline[1]));
// result display url
$result_display_url = explode('class="result__url"', $result_blocks[$x])[1];
$result_display_url = trim(explode("\n", $result_display_url)[1]);
// result snippet
$result_snippet = explode('class="result__snippet"', $result_blocks[$x])[1];
$result_snippet = explode('">', $result_snippet)[1];
$result_snippet = explode('', $result_snippet)[0];
$final_result_html .= "
" . $result_title[0] . "
"
. $result_display_url . "
" . $result_snippet . "
";
}
}
// Ajout des liens de pagination
$final_result_html .= "
";
if ($current_page > 1) {
$final_result_html .= "< Previous ";
}
$final_result_html .= "Page " . $current_page . " of " . $total_pages;
if ($current_page < $total_pages) {
$final_result_html .= " Next >";
}
$final_result_html .= "";
}
//replace chars that old machines probably can't handle
function clean_str($str)
{
$str = str_replace("‘", "'", $str);
$str = str_replace("’", "'", $str);
$str = str_replace("“", '"', $str);
$str = str_replace("”", '"', $str);
$str = str_replace("–", '-', $str);
$str = str_replace("'", "'", $str);
return $str;
}
?>
AlpineFind!
Search Results for
AlpineFind!
The Search Engine for Vintage Computers
Built by Action Retro on YouTube | Why build such a thing?
Powered by DuckDuckGo