3v4l.org

run code in 300+ PHP versions simultaneously
<?php function pagination($url, $actualPage, $numberOfElements, $numberOfElementsPerPage = 10) { $numberOfPageAroundActualPage = 2; $numberOfPageAroundEdges = 1; $url = (string)$url; $actualPage = (int)$actualPage; $numberOfElements = (int)$numberOfElements; $numberOfElementsPerPage = (int)$numberOfElementsPerPage; $numberOfPages = (int)ceil($numberOfElements / $numberOfElementsPerPage); $firstShownElement = ((($actualPage - 1) * $numberOfElementsPerPage) + 1); $lastShownElement = (($actualPage * $numberOfElementsPerPage) > $numberOfElements) ? $numberOfElements : ($actualPage * $numberOfElementsPerPage); $shownPages = array(); if (($actualPage - 1) > ($numberOfPageAroundActualPage + $numberOfPageAroundEdges + 1)) { for ($i = 1; $i < ($numberOfPageAroundEdges + 1); ++$i) $shownPages[] = $i; $shownPages[] = 'separator'; for ($i = ($actualPage - $numberOfPageAroundActualPage); $i < $actualPage; ++$i) $shownPages[] = $i; } else { for ($i = 1; $i < $actualPage; ++$i) $shownPages[] = $i; } $shownPages[] = $actualPage; if (($numberOfPages - $actualPage) > ($numberOfPageAroundActualPage + $numberOfPageAroundEdges + 1)) { for ($i = ($actualPage + 1); $i <= ($actualPage + $numberOfPageAroundActualPage); ++$i) $shownPages[] = $i; $shownPages[] = 'separator'; for ($i = ($numberOfPages - $numberOfPageAroundEdges + 1); $i <= $numberOfPages; ++$i) $shownPages[] = $i; } else { for ($i = ($actualPage + 1); $i <= $numberOfPages; ++$i) $shownPages[] = $i; } $html = '<div class="pagination" role="navigation">'; $html .= '<div class="pagination-short">'; if (1 === $actualPage) $html .= '<span><i class="fa fa-angle-double-left"></i></span> '; else $html .= '<a href="'.$url.($actualPage-1).'" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> '; if ($numberOfPages === $actualPage) $html .= '<span><i class="fa fa-angle-double-right"></i></span> '; else $html .= '<a href="'.$url.($actualPage+1).'" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> '; $html .= '</div>'; $html .= '<div class="pagination-pages">'; foreach ($shownPages AS $page) { if ('separator' === $page) $html .= '<span>…</span> '; elseif ($actualPage === $page) $html .= '<span>'.$page.'</span> '; else $html .= '<a href="'.$url.$page.'" title="Aller à la page '.$page.'">'.$page.'</a> '; } $html .= '</div>'; $html .= '<div class="pagination-details">'; $html .= 'Page '.$actualPage.' sur '.$numberOfPages.'. '; $html .= 'Éléments '.$firstShownElement.' à '.$lastShownElement.' sur '.$numberOfElements.' affichés.'; $html .= '</div>'; $html .= '</div>'; return $html; } echo pagination('index.php?p=2&page=', 1, 8, 10); echo pagination('index.php?p=2&page=', 14, 315, 10); echo pagination('index.php?p=2&page=', 5, 97, 10); echo pagination('index.php?p=2&page=', 5, 88, 10);

preferences:
36.62 ms | 402 KiB | 5 Q