$ _GET删除一些字符(+)并中断我的加密密钥

How can I get the $_GET to the full string back ? It breaks my encyption key so I can't encrypt my stuff using opnessl_public_encrypt

$key = $_GET['key'];
$key = wordwrap($key, 65, "
", true);
$key = <<<EOF
-----BEGIN PUBLIC KEY-----
$key
-----END PUBLIC KEY-----
EOF;

Original key:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgrYDLP5THYt/if+wbShGksfKjmuTe7aI4UuOHNKuONT4ROdWxfN7nn1VH3gHekYDtBRkmSmMwCQLeDzzCBP+hKT0rcfypPf6oKUlzvslOcUxOT/NPElVV7O/zPulO1kIWVHls2o3ioob8r2Bh0dFTDwj6qceTe4SaAFsPN1nSVF/w2dv53ZIO3zwXLdFHJ8dzRW25eHiWTgaIWXk4nmWcwkAE49LcfcAwXWC/Q2nd4zP3uKbi4naacqMpNj5vUPmoJg7iKodrMY4v58dmmACuMqjHjgkQeMRPQK9AV7yaMx82fhUqjA+Dx396CPTCzpk6NDSN6GDKxRzIZS5jgYyfQIDAQAB

Key that $_GET gets:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgrYDLP5THYt/ifwbShGksfKjmuTe7aI4UuOHNKuONT4ROdWxfN7nn1VH3gHekYDtBRkmSmMwCQLeDzzCBP hKT0rcfypPf6oKUlzvslOcUxOT/NPElVV7O/zPulO1kIWVHls2o3ioob8r2Bh0dFTDwj6qceTe4SaAFsPN1nSVF/w2dv53ZIO3zwXLdFHJ8dzRW25eHiWTgaIWXk4nmWcwkAE49LcfcAwXWC/Q2nd4zP3uKbi4naacqMpNj5vUPmoJg7iKodrMY4v58dmmACuMqjHjgkQeMRPQK9AV7yaMx82fhUqjA Dx396CPTCzpk6NDSN6GDKxRzIZS5jgYyfQIDAQAB

Some characters like + gets removed from the string, how can I fix this ?

You should never ever send an encription key via GET. Use POST, and HTTPS where possible. Also, since GET variables are in the URI, some characters will get removed. Again, to avoid this, use POST.

You should not pass that character inside an url. Use urlencode()Ref

$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);

Considering your edit

You can simply do (discouraged):

$key = str_replace(' ','+',$_GET['key']);