#php
#php
Вопрос:
В приведенном ниже коде, как я могу заставить его использовать 01
etc вместо 1
? а также как я могу сделать так, чтобы предыдущая ссылка отображалась 01
как страница ограничения, а не 0
Код:
<?php
if(isset($_GET['page']) >=99){
exit('ran out of pages');
//no idea what you want here :-)
}
if(empty($_GET['page']) OR !is_int($_GET['page'])){
$_GET['page']=01;
$next=$_GET['page'] 01;
$prev=$_GET['page']-1;
echo '<li><a href="branding-' .$next. '">Next</a></li>';
echo '<li><a href="branding-' .$prev. '">Prev</a></li>';
}
Комментарии:
1.
str_pad($_GET['page'], 2, "0", STR_PAD_LEFT)
Вопрос в том, почему?2. @JaredFarrish Спасибо, я действительно сталкивался с тем, что не был уверен в форматировании — установил бы я это как var?
3. Мне любопытно, почему вам тоже нужно это делать. Переменные отображаются только в атрибутах HTML, поэтому они даже не видны пользователю
Ответ №1:
sprintf
идеально подходит для этого
// read current page, defaulting to 1
$page = isset($_GET['page']) ? max((int) $_GET['page'], 1) : 1;
$next = $page 1;
$prev = max($page - 1, 1); // don't go below 1
// ending the PHP context here. Echo-ing strings of HTML is cumbersome
?>
<li><a href="branding-<?= sprintf('d', $next) ?>">Next</a></li>
<li><a href="branding-<?= sprintf('d', $prev) ?>">Prev</a></li>
Кроме того, не назначайте числа с начальным нулем. PHP попытается прочитать их как восьмеричные числа.