PHP字符串不包括+作为字符串中的新运算符空间?

时间:2014-01-03 00:09:58

标签: php

我正在运行以下内容:

$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . '  & pause", vbMaximizedFocus';

$p基本上是$_GET['p'];

用户将输入协议地址,例如+tcp://hosthttp+udp://host,我基本上需要字符串中的+

我的问题是因为p的值中包含+字符,所以我没有得到预期的响应。

1 个答案:

答案 0 :(得分:1)

您无法通过URL将+作为原始格式的参数发送。因为PHP会将其作为查询字符串中的空格读取。

您需要做的是urlencode 之前将其放入网址,然后再decode

这会将+更改为编码版本

例如,之前:

$p = urlencode($some_value);

$url = 'some/path/here?p=' . $p . '&user=' . $user; // etc
// do your redirect

然后:

$p = urldecode($_GET['p']);

$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . '  & pause", vbMaximizedFocus';