2011-11-25 134 views
0

这工作:为什么这个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

回答

1

请尝试以下规则:

$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)); 
+0

第二届一个仅仅是工作的一个。 – TK123

+0

@ JakeRow123出于好奇,为了让第二个工作,你使用$ file_name而不是$ sprintf中的文件名? – Bryan

+0

@Bryan是啊我必须将变量名更改为$ file_name,这是回答者的错误。 – TK123

1

不,您应该使用单引号才能正确转义。

0

您可以添加支架,使其工作:

$command = "convert C:\wamp\www\site\uploads\{$file_name}.jpg -resize 40x30^C:\wamp\www\site\uploads\{$file_name}-thumb.jpg"; 
相关问题