我一直在寻找自己做的网址是这样的:清洁的方式来写网址,而不是串联
$link = base_url('post') . '/' . $post_id . '/' . $slug . '/page/' . $page_num;
要形成http://example.com/post/10/some-post-name/page/1
不用说,这是相当混乱,但我想不出替代?有没有更好的方法写变量的链接呢?
我使用笨作为一个框架,如果有涉及到它的解决方案。
我一直在寻找自己做的网址是这样的:清洁的方式来写网址,而不是串联
$link = base_url('post') . '/' . $post_id . '/' . $slug . '/page/' . $page_num;
要形成http://example.com/post/10/some-post-name/page/1
不用说,这是相当混乱,但我想不出替代?有没有更好的方法写变量的链接呢?
我使用笨作为一个框架,如果有涉及到它的解决方案。
你有几个方面:
首先,通过的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";
当您考虑变量赋值块时,最后一个较长,但它兼有可读性和可靠性。
最后一个也无疑是最快的。 http://micro-optimization.com/string-concatenation-with-double-quotes-vs-sprintf –
使用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()
将指向正确的前端控制器的路径,这样你就可以随意更新配置,并用它来构建路径,一切都会随之更新。
我修改我的答案。使用curly brace notation并避免使用额外的功能。你可以传递一组参数给函数,如下所示:
$link = site_url(array('post', $post_id, $slug, 'page', $page_num));
但是使用数组会更慢。不过,如果您需要动态构建网址,这会很有用。
你能做到这一点的老式方法与功能!
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);
但也许我失去了一些东西
你可以使用双引号(' “”')? –
的sprintf http://php.net/manual/en/function.sprintf.php好 – Raekye
双引号看在我看来是最好的,并且是全世界最快的替代品....只有你的代码跳动速度双引号。 HTTP://计算器。com/questions/3316060 /单引号或双引号对变量连接 –