Php unlink()函数的参数无效
我有一个目录为:Php unlink()函数的参数无效,php,unlink,Php,Unlink,我有一个目录为:PDF\9783790820874-c1.PDF的文件 我想使用unlink()function删除此文件。但是,如果我将目录设置为变量并取消链接,它似乎不起作用。 例如: $FileToDelete = "PDF\9783790820874-c1.pdf"; unlink($FileToDelete); 代码是逻辑的,不是吗?但为什么在执行时,它会显示错误消息: Warning: unlink(PDF\9783790820874-c1.pdf ): Invalid argum
PDF\9783790820874-c1.PDF的文件
我想使用unlink()
function删除此文件。但是,如果我将目录设置为变量并取消链接,它似乎不起作用。
例如:
$FileToDelete = "PDF\9783790820874-c1.pdf";
unlink($FileToDelete);
代码是逻辑的,不是吗?但为什么在执行时,它会显示错误消息:
Warning: unlink(PDF\9783790820874-c1.pdf ): Invalid argument on line 36
我必须将文件目录保存到一个变量中,以便与程序配合良好,是否有任何方法来解决它?您的反斜杠被解释为转义序列
将其更改为正斜杠(适用于Windows上的路径):
或使用单引号:
$FileToDelete = 'PDF\9783790820874-c1.pdf';
或者干脆避开反斜杠:
$FileToDelete = "PDF\\9783790820874-c1.pdf";
您的反斜杠被解释为转义序列
将其更改为正斜杠(适用于Windows上的路径):
或使用单引号:
$FileToDelete = 'PDF\9783790820874-c1.pdf';
或者干脆避开反斜杠:
$FileToDelete = "PDF\\9783790820874-c1.pdf";
我假定您在基于反斜杠路径分隔符的Windows上
我认为问题是由于逃避反斜杠导致的,请尝试:
$FileToDelete = "PDF\\9783790820874-c1.pdf";
unlink($FileToDelete);
希望这能帮你解决问题
请记住,与字符串内的转义相比,“”和“”的行为有所不同。因此,虽然“a\b.pdf”可能有效,“a\b.pdf”可能意味着完全不同的东西(其中a和b是[一些字符串])。我假定您在基于反斜杠路径分隔符的Windows上
我认为问题是由于逃避反斜杠导致的,请尝试:
$FileToDelete = "PDF\\9783790820874-c1.pdf";
unlink($FileToDelete);
希望这能帮你解决问题
请记住,与字符串内的转义相比,“”和“”的行为有所不同。因此,尽管“a\b.pdf”可能有效,“a\b.pdf”可能意味着完全不同的东西(其中a和b是[一些字符串])。无法重现错误!尝试将\
更改为/
错误是由于文件名中的\导致的。尝试思考\9
是什么。。。无论哪种方式,如果要使用反斜杠,都需要使用另一个反斜杠对其进行转义,或者对字符串使用单引号。但是,如果我直接使用目录路径编写参数,则代码运行良好,如:unlink('PDF\9783790820874-c1.PDF')代码>并且我尝试将“\”更改为“/”,但不起作用@rizier123无法重现错误!尝试将\
更改为/
错误是由于文件名中的\导致的。尝试思考\9
是什么。。。无论哪种方式,如果要使用反斜杠,都需要使用另一个反斜杠对其进行转义,或者对字符串使用单引号。但是,如果我直接使用目录路径编写参数,则代码运行良好,如:unlink('PDF\9783790820874-c1.PDF')代码>并且我尝试将“\”改为“/”,但在@Rizier123中效果不太好。无论如何,使用单引号是一个好习惯,除非PHP需要在其中处理某些内容。我认为你有一个错误的链接,虽然,这是一个为正则表达式。这可能是您想要的。我有两个变量,它们是$str1=“PDF\\9783790820874-c1.PDF”
和str2=$DataField[$j].\\'.$DataField[$j+1]
,两者都会回显相同的结果:PDF\9783790820874-c1.PDF
,但是当我使用Functionunlink($str1)
和unlink($str2)
时,只有带有$str1
作为参数的那个会起作用。为什么?请帮助@joecoderClearstr1
和str2
实际上并不相同,否则它们的工作原理是相同的。我不知道您的$DataField
数组中有什么,因此我无法帮助您调试str2
。但是如果str1
有效,那么您的问题就解决了吗?不,$str1
仅用于测试目的。实际上,我使用$DataField[]
来存储文件目录和文件名,然后我必须使用它来获取它们,以便删除。$str1
和$str2
都返回了完全相同的结果,但是为什么$str2
不起作用呢@JoeCoderIt使用单引号是一个好习惯,除非PHP需要在其中处理某些内容。我认为你有一个错误的链接,虽然,这是一个为正则表达式。这可能是您想要的。我有两个变量,它们是$str1=“PDF\\9783790820874-c1.PDF”
和str2=$DataField[$j].\\'.$DataField[$j+1]
,两者都会回显相同的结果:PDF\9783790820874-c1.PDF
,但是当我使用Functionunlink($str1)
和unlink($str2)
时,只有带有$str1
作为参数的那个会起作用。为什么?请帮助@joecoderClearstr1
和str2
实际上并不相同,否则它们的工作原理是相同的。我不知道您的$DataField
数组中有什么,因此我无法帮助您调试str2
。但是如果str1
有效,那么您的问题就解决了吗?不,$str1
仅用于测试目的。实际上,我使用$DataField[]
来存储文件目录和文件名,然后我必须使用它来获取它们,以便删除。$str1
和$str2
都返回了完全相同的结果,但是为什么$str2
不起作用呢@乔科德