6

変数を使用してクエリを検索結果ページに渡していました:?s=

私はサイトをテストしていましたが、クエリに&記号が含まれている場合よりも、取得しようとする$_GET['s']と&記号で切り取られることがわかりました。

試してみましたが&、変換しても%26同じ問題が発生します。

それらをエンコードしてURLで渡すにはどうすればよいですか?

編集:

私はそれをエンコードしようとしたが%26、それでも機能しないことを指摘した。

urlencode()私が得た?s=pizza%26pastaとき、私は何度も試しましたprint_r($_GET)

Array ( [s] => pizza [pasta] => )

編集2:

.htaccess問題は実際には「&something =」の「&something」を変換しているように見えることに関係していることがわかりました。htaccessで修正する方法がわかりません。

これは私の.htaccessファイルです:

RewriteEngine On
RewriteBase /

# remove www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

# rewrite to action
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/?$ /a/?s=$1 [L,QSA]
4

4 に答える 4

16

amersand(&)toをエンコードするUrl%26は、これを行う正しい方法です。

を使用http://yoursite.com?var1=this%26that&var2=otherすると、$_GETスーパーグローバル配列に2つの変数が含まれるようになります

$_GET['var1'] = 'this&that';
$_GET['var2'] = 'other';

この機能urlencodeを使用すると、エンコードが必要なすべての文字を自動的にエンコードできます。これらは通常、URLの構成要素を構成するために使用される文字です。つまり、アットマーク(@)、コロン(:)、疑問符(?)などです。

var_dump(urlencode('one&two'));

string(9) "one%26two"
于 2012-08-02T06:26:51.733 に答える
2

次の手順を使用します。

  1. まず、PHPで文字列を作成します
  2. 次に、関数urlencode()を使用して、文字列を正しくエンコードします。
  3. $ _GET []を使用する場合は、必ずurldecode()を使用して変数を元の形式に戻してください。

お役に立てれば :)

于 2012-08-02T06:34:54.980 に答える
0

これは私が作成した生のパッチで、配列を取得して空白キーを探し、それらを文字列にマージします。ただし、単一の変数が渡された場合にのみ機能します。

function arrayToString($array) {
    $string = '';
    foreach ($array as $key => $value) {
        if($value) {
            $string = $string.'&'.$value;
            } else {
            $string = $string.'&'. $key;
            }
        }
    return substr($string,1,strlen($string));
    }

これは、誰かが有用だと思った場合に備えて、複数の変数用です。

   function arrayToString($array) {
        $string = '';
        foreach ($array as $key => $value) {
            if($value) {
                $string = $string.'&'.$key.'='.$value;
                } else {
                $string = $string.'&'. $key;
                }
            }
        return substr($string,1,strlen($string));
        }
    return $string
于 2012-08-02T07:08:51.460 に答える
0

次の文字列をURLに送信するとします。

var1 = "1st Class Ink & Toner"
var2 = "Test1"
var3 = "test3"

現在phpを使用して、

var1 = urlencode(var1); left remain the same.

次に、それらをURLに入れます:http://url.com/x=var1&y=var2&z=var3

vKj

于 2014-05-13T04:49:12.087 に答える