2016-04-02 24 views
-1

s変数を別のページの入力フォームからpage.phpに送信します。エコーphp可変文字列がアンパサンドの後に途切れます

URLには完全な文字列があります。変数をエコーバックしようとすると、文字列はアンパサンドの後に切り捨てられます。

形態:

<form action="page.php" method="get"> 

<input type="text" name="s" id ="s" /> 

</form> 

変数がある:

search & search 

URL:

page.php?s=search+%26+search&var2=variable 

変数エコーとして:

search 

は、私が試してみました:

echo htmlspecialchars($_GET['s']); 
    echo htmlentities($_GET['s']); 
    echo urldecode($_GET['s']); 
+0

方法encoという文字列です捧げる? 'search%20%26%20search'でより良い結果が得られると思います('%20'を使用して '+ 'の代わりにスペースを表現する) – andrew

+0

page.phpに入力しようとしましたか?s = search%20%26%20searchまだ完全な変数をエコーし​​ません – user3312792

+0

本当にGETメソッドを使用しますか? – Fil

答えて

0

あなたはこれをarchieveする(少なくとも)3つの貴様の方法を使用することができます

1からurlencode():あなたがのために文字列をエンコードするためのURLを生成する必要があります場所でこの機能を使用しますURL形式。

2 - %26( "+"を付けないでください)。

3 - $_SERVER['QUERY_STRING']を使用してください:1つのパラメータしかない場合は、この方法ですべてのquery_stringを取得できます。

UPDATE:

すなわち:

$url = "page.php?s=".urlencode('search & search')."&var2=".urlencode('variable'); //or urlencode($variable) 

次に使用:urldecode()を貴様$ _GETsを解析します。私はこの種の

<a href="http://localhost/example/page.php?s=search+%26+search"> 

、あなたがこのようなコードがあるとし

0

は、あなたがそれをエコーし​​ようとだけsearch後になります。

<a href="http://localhost/example/page.php?s=<?php echo urlencode("search+%26+search") ?>"> 

が、それは、URLのクエリ部分をエンコードするのに便利な方法ですが、この方法を試してみてください。

もこの1、PHPの公式ドキュメント

<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar); 
     echo '<a href="mycgi?' . htmlentities($query_string) . '">'; 
?> 

からの例を試してみて、より多くの情報については、これを参照してください。 http://php.net/manual/en/function.urlencode.php

+0

私はちょうど同様のプロセスを想定しています。この方法で探しているのと同じ結果を出すか、変数に代入することもできます – Fil

+0

''検索+%26 +検索 " URLエンコードされた文字列、 '' search&search "'をエンコードするURLは – andrew

0

あなたが言ったことを試したところ、問題はURLのエンコードではないようです。

これを試すhttps://www.google.co.in/?q=search+%26+search Googleがsearch & searchを検索すると、変数をエコーし​​ようとしているpage.phpに問題がある可能性があります。

さらに、Googleが何も特別なことをしていないことを証明するために、私はindex.phpとpage.phpという2つのファイルを作成しました。結果は期待どおりでした。

のindex.php

<html> 
    <body> 
     <form action="1.php" method="get"> 
      <input type="text" name="s" id="s"> 
     </form> 
    </body> 
</html> 

page.php

<?php 
    echo $_GET['s']; 
?> 

出力:
search & search

変数をエコーし​​ようとしているpage.php上のコードをデバッグするようにしてくださいここにコード全体を貼り付けてください。

0

ここでコードが

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Problem</title> 
    </head> 
    <body> 
    <form action="page.php" method="get"> 
     <input type="text" name="s" id ="s" /> 
     <input type="text" name="var2" id ="d" /> 
     <input type="submit" name="name" value="submit"> 
    </form> 
    </body> 
</html> 

とpage.php

、あなたのブラウザにそれを実行
<?php 
if (isset($_GET['s'])) { 
    echo $_GET['s'] .' '. $_GET['var2']; 
} 
?> 

、それは、2つの入力フォームが表示され、提出するのです、しかし私はそれをローカルにテストし、これを試してみてくださいボタン。私も、URLに貼り付けてみてください

search & search variable

出力は、これが役立つだろうpage.php?s=search+%26+search&var2=variable&name=submit

が、私は願って同じ

を引き起こすだろう

関連する問題