1

サイトの URL の URI セグメントにスペースと括弧を含める必要があります (セグメントは DB クエリに使用されます)。したがって、私rawurlencode()は文字列を受け取り、次にrawurldecode()同じ文字列を受信ページに表示しますが、完全に同じではありません。スペースは問題ありませんが、括弧は 16 進文字コードに残されています。これにより、データベースクエリが完全に台無しになります。rawurldecodeに渡された正確な文字列を生成しない理由はrawurlencode()何ですか?

元の文字列 = コンプトン コミュニティ カレッジ (CA)

エンコードされた文字列 =

  Compton%20Community%20College%20%28CA%29

デコードされた文字列の vardump は

  string(38) "Compton Community College (CA)"

ビューページのソースで

  "Compton Community College (CA)"

編集

どうやらこれは Codeigniter のものかもしれません (私が使用しています)。コード

<a href='<?php echo site_url('college/'.rawurlencode($player['college'])); ?>'> 

の正しいURLを生成しますhttp://localhost/ff/index.php/college/Compton%20Community%20College%20%28CA%29

最終的な URI セグメントは、次の関数のパラメーターとして受信されます。

function view_college($college = FALSE)
{
    if($college === FALSE)
    {//no college provided
        redirect('');
    }
    $college = rawurldecode($college);

この時点で、文字列は既に上に表示されている形式になっています。だから、何かを台無しにしているか、CIが文字列を正しく渡すことを期待できないだけかもしれません。:-(考え?

4

3 に答える 3

1

ID を使用したくない場合 (おそらく SEO の理由で)、別のフィールドをデータベースに追加することができます - Web URL、および大学名の Web セーフ バージョンを書くことができます...あなたの例では、次のようなものになる可能性がありますCompton-Community-College-CAまたは小文字。

完全な URL:

http://localhost/ff/index.php/college/Compton-Community-College-CA

CodeIgniter の URL Helperには、そのための優れた関数url_title()があります。

于 2012-08-28T01:11:29.860 に答える
0

いいえいいえいいえ。それをしないでください。なんと頭が痛い!

すべての大学をデータベースに入れ、自動インクリメント整数id列を使用してその内容を掘り下げます。

ルートを定義するために<base>内部にHTML 要素を配置する場合:<head>

<base href="http://localhost/yourapp/">

次に、非常に簡単に書くことができます:

<a href='college/<?= $id;?>'><?= $name;?></a>

基本的に、次のように動作するコードをレンダリングします。

<a href='http://localhost/yourapp/college/5'>Some Community College</a>


更新 1: @Frank Farmer のコメントの後、自動インクリメントidフィールドを維持することをお勧めしますが、URL でこれを使用して撤回します。代わりに、別の英数字 SEOid をプログラムで生成し、代わりに検索エンジンの最適化に使用します。同じ基本的なリンク構造。

于 2012-08-28T01:03:29.423 に答える