0

私のURLにはこれがあります

http://www.test.com/?jjjanu@gmail.com&tid=RetEm_Welcome_resp_05232012

問題はそうではないということです

http://www.test.com/?email = jjjanu@gmail.com&tid=RetEm_Welcome_resp_05232012

notice email = jjjanu@gmail.com

$_GET['email'] 上記の文字列からメールアドレスを取得するにはどうすればよいですか?

4

3 に答える 3

2

与えられた両方の例は、目的ので機能しません$_GET['email']

最初の例でhttp://www.test.com/?jjjanu@gmail.com&tid=RetEm_Welcome_resp_05232012は、電子メールアドレスの「キー」がないため、それを取得する唯一の方法は、各クエリ文字列パラメータを反復処理し、キーなしの値が電子メールアドレスであると想定するか、正規表現を実行することです。それに一致します。(非常に)基本的なものは次のとおりです。

$email = '';
foreach ($_GET as $key => $val) {
    if (strpos($key, '@') && ($val == '')) {
        // assume this is an email address
        $email = $key;
        break;
    }
}

2番目の例、http://www.test.com/?email = jjjanu@gmail.com&tid=RetEm_Welcome_resp_05232012「email」という単語の後のスペースは名前に含まれます。次の方法で取得できます。 $email = $_GET['email '];

?email=[email address]通常のクエリ文字列が機能しない特定の理由はありますか?

于 2012-07-16T20:25:01.227 に答える
1

これに対する明白な答えはforeach終わり$_GET、キーで電子メールアドレスを探します。ただし、これは機能しません。これは、PHPが.電子メールアドレス(および場合によっては他の文字も)のを_文字に変換して、との下位互換性を確保するためregister_globalsです。これにより、タスクは少し難しくなりますが、不可能ではありません。

PHPは実際に電子メールアドレスでを消費し、から生のクエリ文字列を取得した場合でもそれを偶数に変換するため、実際にはそれで遊んでいますが、実際に不可能です。ごめん。._$_SERVER['QUERY_STRING']

PHPが取得可能なデータを変更するとは思わないため、おそらくPOSTリクエストで機能しphp://inputますが、これを変更できれば、適切なキーがあり、これがないようにリクエストURLを変更できる可能性があります。問題になります。

于 2012-07-16T20:32:21.423 に答える
0

リクエストURIの文字列を取得できます

$query=$_SERVER['REQUEST_URI'];

その後、必要に応じてこのクエリを解析できます

于 2012-07-16T20:29:12.657 に答える