我发现自己在做这样的 URL:
$link = base_url('post') . '/' . $post_id . '/' . $slug . '/page/' . $page_num;
形成http://example.com/post/10/some-post-name/page/1
不用说,它很乱,但我想不出替代方案?有没有更好的方法在其中编写带有变量的链接?
如果有涉及它的解决方案,我将使用 Codeigniter 作为框架。
我发现自己在做这样的 URL:
$link = base_url('post') . '/' . $post_id . '/' . $slug . '/page/' . $page_num;
形成http://example.com/post/10/some-post-name/page/1
不用说,它很乱,但我想不出替代方案?有没有更好的方法在其中编写带有变量的链接?
如果有涉及它的解决方案,我将使用 Codeigniter 作为框架。
你有几种方法:
首先,通过 sprintf:
sprintf('%s/%s/%s/page/%s', base_url('post'), $post_id, $slug, $page_num);
或通过数组内爆:
implode('/', array(base_url('post'), $post_id, $slug, 'page', $page_num));
或者,如果您将所有值放入变量中,则可以利用字符串插值。
$url = ...;
...
"$url/$post_id/$slug/page/$page_num";
当您考虑到变量赋值块时,最后一个更长,但它结合了简洁性和可读性。
使用sprintf:
$link = sprintf('%s/%d/%s/page/%d', base_url('post'), $post_id, $slug, $page_num);
你可以这样做:
$link = site_url("post/{$post_id}/{$slug}/page/{$page_num}");
你真的应该使用site_url()
而不是base_url()
CI 链接。base_url()
适用于非 CI 资产,如图像和 css。
site_url()
将指向正确的前端控制器路径,因此您可以随意更新配置,并且使用它构建路径的所有内容都会相应更新。
我修改了我的答案。使用大括号符号并避免使用额外的函数。您可以将参数数组传递给函数,如下所示:
$link = site_url(array('post', $post_id, $slug, 'page', $page_num));
但是使用数组比较慢。不过,如果您需要动态构建 url,这将很有用。
你可以用老式的方法来做一个函数!
function buildlink($base_url,$post_id,$slug,$page_num)
{
return $base_url . '/' . $post_id . '/' . $slug . '/page/' . $page_num;
}
像这样称呼它
$link = buildlink(base_url('post') ,$post_id, $slug ,$page_num);
但也许我错过了一些东西