PHP:在双引号中使用带反斜杠的变量

时间:2019-09-24 14:06:05

标签: php curl path

我有一个带有Windows路径和后缀的变量。在此,我需要两个变量。看起来像这样:

$file_name_with_full_path = 'C:\inetpub\wwwroot\upload\files\$filnr\$file';

最后,我需要变量$ filnr和$ file,但是不可能用“”

$file_name_with_full_path = "C:\inetpub\wwwroot\upload\files\$filnr\$file";

“”出现错误,因为我在脚本中执行了curl请求。

如何在单个'中插入带有反斜杠的变量?

我的完整脚本如下:

    if ($result->num_rows > 0) {

    //schleife ausführen
    while($row = $result->fetch_assoc()) {

        //ip und filnr aus datenbank in var
        $ip = $row["ip"];
        $filnr = $row["filnr"];

        echo "$filnr $ip<br>";

        //filnr und dateiname momentan noch hart codiert
        $target_url = "http://10.74.20.94:6001/upload";
        $file_name_with_full_path = 'C:\inetpub\wwwroot\upload\files\$filnr\$file';

        if (function_exists('curl_file_create')) {
            $cFile = curl_file_create($file_name_with_full_path);
          } else {
            $cFile = '@' . realpath($file_name_with_full_path);
          }

        $post = array('targetpath'=>'C:\bizstorecard\hossi','uploadfile'=> $cFile);

        $go = curl($target_url,$post);

    }
} else {
    echo "Fehler bei Abfrage";
}

function curl($target_url,$post) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$target_url);
        curl_setopt($ch, CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_exec($ch);
        curl_close($ch);
}

3 个答案:

答案 0 :(得分:1)

只需使用字符串串联:

$file_name_with_full_path = 'C:\inetpub\wwwroot\upload\files\\' . $filnr . '\\' . $file;

请注意,您需要在\\之前将\用于',否则PHP会将其视为转义的'

如果要使用双引号,则只需要转义在可以解释为变量(或特殊字符,例如\f = Formfeed)之前发生的所有反斜杠:

$file_name_with_full_path = "C:\inetpub\wwwroot\upload\\files\\$filnr\\$file";

Demo on 3v4l.org

答案 1 :(得分:1)

您不能直接在单个带引号的字符串中使用变量,如果要使用此变量,则需要手动连接或使用sprintf

双引号不起作用的原因是因为反斜杠转义了$字符,因此仅按字面意义输出字符串。您需要转义反斜杠字符才能正确打印它们。

$file_name_with_full_path = "C:\\inetpub\\wwwroot\\upload\\files\\$filnr\\$file";

答案 2 :(得分:0)

或者,为了增加可读性,您可以在双引号字符串内使用花括号。

$path = "C:\inetpub\wwwroot\upload\files\{$filnr}\{$file}";

此外,这适用于使用单引号寻址的数组值:

$path = "C:\inetpub\wwwroot\upload\files\{$file['directory']}\{$file['name']}";