我有一个带有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);
}
答案 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";
答案 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']}";