我正在尝试生成以下网址,但是下面的代码我得到了这个原因?
结果:
$prev = http://domain.co.nz/pages/brand-02
$next = http://domain.co.nz/pages/brand-02
我想要的是什么:
$prev = http://domain.co.nz/pages/brand-01 - Should not be able to go any lower then 01
$next = http://domain.co.nz/pages/brand-02
代码:
<?php
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$pageSlug = $url;
$prev=$pageSlug--;
echo 'prev = ' .$prev. '<br/>';
echo 'next' . '<br/>' . '<br/>';
$next=$pageSlug++;
echo 'next = ' .$next. '<br/>';
echo '<a href="' .$next.'" > Next</a>';
?>
答案 0 :(得分:3)
如果您参考手册,您将看到
请注意,字符变量可以递增但不会递减,即使只支持纯ASCII字母和数字(a-z,A-Z和0-9)。
这就是为什么
$pageSlug--
无影响且$pageSlug
保持不变。
虽然你可以增加字符串,代码
$next = $pageSlug++;
装置
将
$pageSlug
分配给$next
,然后增加$pageSlug
。
这就是为什么你的两个操作都不起作用的原因。
答案 1 :(得分:1)
由于您正在使用字符串,因此您需要在递增或递减之前提取数字部分。这是一种方法:
<?php
$url = 'testing/.sad/05';
// get any numbers from end of string
$matches = array();
if (preg_match('#(\d+)$#', $url, $matches)) {
// if we have a match
$page = $matches[1];
$prev = substr_replace($url, sprintf('%02d', $page - 1), -strlen($page));
$next = substr_replace($url, sprintf('%02d', $page + 1), -strlen($page));
} else {
$prev = $next = null;
}
echo '<pre>';
var_dump(get_defined_vars());
echo '</pre>';
答案 2 :(得分:0)
试试这个,
<?php
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") ."://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
//$pageSlug = $url;
$pageSlug = explode("code-",$url)[0];
$page = explode("code-",$url)[1];
$prev = $page--;
$prev=$pageSlug."code-".$page;
echo 'prev = ' .$prev. '<br/>';
echo 'next' . '<br/>' . '<br/>';
$next = page++;
$next=$pageSlug."code-".$next;
echo 'next = ' .$next. '<br/>';
echo '<a href="' .$next.'" > Next</a>';
?>