我想将一个由批处理文件生成的文件名作为参数传递给命令行php脚本。当然,要在Windows中访问本地文件,您必须将反斜杠(c:''blah''yeah.txt
)加倍。这很有挑战性,因为反斜杠是转义字符。
$fName = $_GET["fileName"]; // yields c:'blah'yeah.txt
$fName = ___TRANSFORM THE SLASHES HERE___; //needs to be c:''blah''yeah.txt
$fh = fopen($fName, 'rb');
$feed = fread($fh, filesize($fName));
fclose($fh);
如何使用正则表达式?
注意:我使用$_GET
是因为我想使用参数名而不是$argv[0]。
使用此正则表达式:$fName = preg_replace('{'''}','''''''',$fName);
匹配1需要3个,匹配2需要6个。而且,如果没有花括号,它将无法工作。
如果有人比我更聪明,想解释为什么,我会很感激。我只是想让别人省心。