PHP - is_file表示文件不存在但它确实存在

时间:2018-02-05 08:43:02

标签: php joomla

我试图将3个pdf文件附加到电子邮件中,我遇到的问题是is_file在前两个文件上给出了错误,但是它运行的第三个文件。文件来自文本框,并按如下方式展开:

UIViewController

我把它放在foreach循环中以附加到这样的电子邮件:

$pdfs = explode("\n", $string);

当我运行此代码时,我只会附加第三个pdf文件,但是如果我删除它们在阵列中的foreach($pdfs as $pdf) { if (is_file(JPATH_ROOT . $pdf)) { $mail['attachment'][] = array('name' => basename($pdf), 'file' => JPATH_ROOT . $pdf); } } 但是不会附加到已发送的电子邮件中。 那么结果是:

is_file()

但前两个文件没有附加到已发送的电子邮件中。

1 个答案:

答案 0 :(得分:2)

可能在输入数据中分隔这些条目的换行符不只是\ n ...所以你可能在前两个末尾留下了\ r \ n,这当然会让PHP找不到那些文件。< / p>

第三个文件不会有这个问题,因为可能在该行之后没有更多的换行符。

  

文件来自文本框

假设您指的是一个HTML textarea元素 - 所有现代浏览器都会发送\ r \ n来表示textarea中的换行符 - 所以如果您只从那里获取内容,"\r\n"处的爆炸应该有效。如果您不确定预先使用的确切换行符格式,您还可以使用preg_split解决方案,如此处所示https://stackoverflow.com/a/36851287/1427878