在PHP中用另一个符号替换反斜杠
一直在努力用另一个符号(如“.-”)替换反斜杠。只是为了指示反斜杠的位置,因为我无法通过url作为GET变量发送字符串(如“C\xampp\etc”),所以我想首先用另一个符号替换该字符串中的反斜杠,然后通过url发送,然后将它们替换回处理它的PHP文件中的反斜杠。不过,有没有更好的方法通过url发送这样的字符串?因为当我尝试以下脚本时:在PHP中用另一个符号替换反斜杠,php,regex,replace,get,backslash,Php,Regex,Replace,Get,Backslash,一直在努力用另一个符号(如“.-”)替换反斜杠。只是为了指示反斜杠的位置,因为我无法通过url作为GET变量发送字符串(如“C\xampp\etc”),所以我想首先用另一个符号替换该字符串中的反斜杠,然后通过url发送,然后将它们替换回处理它的PHP文件中的反斜杠。不过,有没有更好的方法通过url发送这样的字符串?因为当我尝试以下脚本时: $tmp_name = preg_replace("\", ".-.", $_FILES['uploadfile']['tmp_name']); 它变成了一
$tmp_name = preg_replace("\", ".-.", $_FILES['uploadfile']['tmp_name']);
它变成了一个php错误,因为\也用作分隔符
有人能帮我吗
提前谢谢
顺便说一句,如果我能够通过url发送一个完整的数组,整个问题都会解决,但我认为这是不可能的?preg\u replace中使用的正则表达式应该包含在一对分隔符中,并尝试使用
\\\
而不是\
,如下所示:
$tmp_name = preg_replace("{\\\}", ".-.", $_FILES['uploadfile']['tmp_name']);
编辑:
要反转替换,可以执行以下操作:
$str = preg_replace('{\.-\.}',"\\",$str);
您需要转义
以匹配文字点。使用urlencode()
/urldecode()
顺便说一句:这听起来像是一个巨大的安全漏洞(通过请求发送绝对路径)
PS:
preg\u replace()
用于正则表达式。下次请尝试使用str\u replace()
。如果您没有使用正则表达式(您没有),则应使用str\u replace
:
$tmp_name = str_replace('\\', '.-.', $_FILES['...']);
请注意,您必须使用另一个\
来转义\
(否则它将转义以下”
)
至于分隔符错误-正则表达式需要包含在delimeters中,例如/foo/
(/
是分隔符,foo
是模式)。但是,同样,您不需要使用或担心regexp
顺便说一句,如果我能够通过url发送一个完整的数组,整个问题都会解决,但我认为这是不可能的
那很容易。PHP:
$url = 'http://example.com/?array=' . urlencode(serialize($array)); // html
$array = unserialize($_GET['array']); // server side
或Javascript:
url = "http://example.com/?array=" + encodeURIComponent(JSON.stringify(array)); // client
$array = json_decode($_GET['array']); // server
(对于Javascript,您必须查看encodeURIComponent是否正确,并且还需要官方的JSON库)Update:我如何扭转这种局面?
url = "http://example.com/?array=" + encodeURIComponent(JSON.stringify(array)); // client
$array = json_decode($_GET['array']); // server