为什么这个PHP字符串不能正确地转义?
问题描述:
$command = "convert C:\wamp\www\site\uploads\a.jpg -resize 40x30^C:\wamp\www\site\uploads\a-thumb.jpg";
exec($command);
由于我使用双引号我认为这将工作太:
$command = "convert C:\wamp\www\site\uploads\$file_name.jpg -resize 40x30^C:\wamp\www\site\uploads\$file_name-thumb.jpg";
exec($command);
但$file_name
VAR没有被recorgnized,但可以看作是一个字符串一些原因。
所以,我想这一点:
$command = "convert C:\wamp\www\site\uploads\".$file_name.".jpg -resize 40x30^C:\wamp\www\site\uploads\".$file_name."-thumb.jpg";
exec($command);
但这抛出一堆语法错误。
如何正确地逃避这个字符串?通过转义,我的意思是我怎样才能用这个变量$file_name
。
答
请尝试以下规则:
$command = "convert C:\wamp\www\site\uploads\{$file_name}.jpg -resize 40x30^C:\wamp\www\site\uploads\{$file_name}-thumb.jpg";
exec($command);
或:
$command = "convert C:\wamp\www\site\uploads\%s.jpg -resize 40x30^C:\wamp\www\site\uploads\%s-thumb.jpg";
exec(sprintf($command, $filename, $filename));
答
不,您应该使用单引号才能正确转义。
答
您可以添加支架,使其工作:
$command = "convert C:\wamp\www\site\uploads\{$file_name}.jpg -resize 40x30^C:\wamp\www\site\uploads\{$file_name}-thumb.jpg";
第二届一个仅仅是工作的一个。 – TK123
@ JakeRow123出于好奇,为了让第二个工作,你使用$ file_name而不是$ sprintf中的文件名? – Bryan
@Bryan是啊我必须将变量名更改为$ file_name,这是回答者的错误。 – TK123