0

私は、次のような URL を使用していることに気づきました。

$link = base_url('post') . '/' . $post_id . '/' . $slug . '/page/' . $page_num;

http://example.com/post/10/some-post-name/page/1を形成するには

言うまでもなく、かなり面倒ですが、代替案が思い浮かびませんか? 変数を含むリンクを書き込むより良い方法はありますか?

それを含む解決策がある場合、私はフレームワークとして Codeigniter を使用しています。

4

4 に答える 4

3

いくつかの方法があります:

まず、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";

変数割り当てブロックを考慮すると、最後のコードは長くなりますが、簡潔さと可読性を兼ね備えています。

于 2012-12-05T22:18:12.237 に答える
2

sprintfを使用します。

$link = sprintf('%s/%d/%s/page/%d', base_url('post'), $post_id, $slug, $page_num);
于 2012-12-05T22:15:42.063 に答える
1

次のようなことができます。

$link = site_url("post/{$post_id}/{$slug}/page/{$page_num}");

CI リンクsite_url()の代わりに使用する必要があります。画像や css などの非 CI アセットを対象としています。base_url()base_url()

site_url()は正しいフロントコントローラーパスを指すため、構成を自由に更新でき、それを使用してパスを構築するすべてがそれに応じて更新されます。

答えを修正しました。中括弧表記を使用し、余分な関数を使用しないようにします。次のように、引数の配列を関数に渡すことができます。

$link = site_url(array('post', $post_id, $slug, 'page', $page_num));

ただし、配列の操作は遅くなります。ただし、URL を動的に作成する必要がある場合は、これが役立ちます。

于 2012-12-05T22:15:49.190 に答える
0

関数を使って昔ながらの方法でそれを行うことができます!

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);

しかし、多分私は何かが欠けている

于 2012-12-05T23:01:01.420 に答える