如何将文件名从批处理文件传递到CLI PHP


How to pass file names from a batch file to CLI PHP

我想将一个由批处理文件生成的文件名作为参数传递给命令行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个。而且,如果没有花括号,它将无法工作。

如果有人比我更聪明,想解释为什么,我会很感激。我只是想让别人省心。