0

PHPには、文字列変数を返す関数 get_query_string() があります。例えば

$end_of_url = get_query_string();
print $end_of_url;

私を印刷します

?id=192

これをURLの最後に入れる必要がありますが、追加すると次のようなURLになります

http://mysite.com/device-information%3Fid%3D192

疑問符 (?) は ASCII 値%3Fで置き換えられ、等号 (=) は%3Dで置き換えられます。

疑問符と等号をURLに正しく入れる方法は?

追加されたコード:

    <div id="navigationLang" class="clearfix" style="margin-right: 60px;"> 
            <?php 
                $path = $_GET['q'];
                $languages = language_list('enabled');
                $links = array();
                foreach ($languages[1] as $language) {
                    $links[$language->language] = array(
                        'href'       => $path.get_query_string(),
                        'title'      => ucfirst($language->prefix),
                        'language'   => $language,
                        'attributes' => array('class' => 'language-link'),
                    );
                }

function get_query_string(){
    $request_url = apache_getenv("HTTP_HOST") . apache_getenv("REQUEST_URI");
    $request_url = "http://".$request_url;
    $parts = parse_url($request_url);
    $end_of_url = $parts['query'];
    if ($end_of_url != "") {
        $end_of_url = '?'.$parts['query'];
        $a = htmlentities($end_of_url);
        $b = html_entity_decode($a);
        return $b;
    }
    else {return ""; }
}

主な問題は、print / echo が正しく機能することですが、ウェブサイトでテストすると、リンクに ASCII 記号 (%3F および %3D) が含まれており、疑問符と等号が必要です。

4

2 に答える 2

1

これは、あなたget_query_string()が urlencoding であるためです。試す:

print 'http://example.com/'.urldecode($end_of_url);
于 2012-08-22T09:59:28.927 に答える
0

これによって解決される問題:

$id = $_GET['id'];  // here i get id value (in example it's  192)

 $links[$language->language] = array(
                        'href'       => $path,
                        'title'      => ucfirst($language->prefix),
                        'language'   => $language,
                        'attributes' => array('class' => 'language-link'),
                        'query' => array('id' => $id),  // here i create end of url

                    );

主なポイントは、drupal では、href ではなくすべてのもの (?id=192) を渡す必要がありますが、配列である「クエリ」引数を追加することです。すべての疑問符と等号が自動的に追加されたので、最後に正しいリンクを取得しました

?id=192 

192 は前の URL の変数です。

于 2012-08-27T08:55:13.730 に答える