我有一个带有Windows路径和backslahes的变量。在这方面,我需要两个安托赫变量。看起来像这样:
$file_name_with_full_path = 'C:inetpubwwwrootuploadfiles$filnr$file';
最后我需要变量 $filnr 和 $file,但不可能用">
"$file_name_with_full_path = "C:inetpubwwwrootuploadfiles$filnr$file";
使用" "我得到了一个错误,因为在我的脚本中我做了一个卷曲请求。
如何在单个 ' 中插入带有反斜杠的变量?
我的完整脚本如下所示:
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:inetpubwwwrootuploadfiles$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:bizstorecardhossi','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);
}
只需使用字符串连接:
$file_name_with_full_path = 'C:inetpubwwwrootuploadfiles\' . $filnr . '\' . $file;
请注意,您需要在'
之前对使用
\
,否则 PHP 会将其视为转义'
。
如果你想使用双引号,你只需要转义在可以解释为变量(或特殊字符,例如f
= 表单馈送(:
$file_name_with_full_path = "C:inetpubwwwrootupload\files\$filnr\$file";
3v4l.org 演示
您不能直接在单个带引号的字符串中使用变量,如果要使用它,则需要手动连接或使用sprintf
.
双引号不起作用的原因是因为反斜杠转义了$
字符,因此它只是按字面意思打印字符串。您需要转义反斜杠字符才能正确打印它们。
$file_name_with_full_path = "C:\inetpub\wwwroot\upload\files\$filnr\$file";
或者,为了增加可读性,您可以在双引号字符串中使用大括号。
$path = "C:inetpubwwwrootuploadfiles{$filnr}{$file}";
此外,这适用于使用单引号寻址的数组值:
$path = "C:inetpubwwwrootuploadfiles{$file['directory']}{$file['name']}";