我试图将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()
但前两个文件没有附加到已发送的电子邮件中。
答案 0 :(得分:2)
可能在输入数据中分隔这些条目的换行符不只是\ n ...所以你可能在前两个末尾留下了\ r \ n,这当然会让PHP找不到那些文件。< / p>
第三个文件不会有这个问题,因为可能在该行之后没有更多的换行符。
文件来自文本框
假设您指的是一个HTML textarea
元素 - 所有现代浏览器都会发送\ r \ n来表示textarea中的换行符 - 所以如果您只从那里获取内容,"\r\n"
处的爆炸应该有效。如果您不确定预先使用的确切换行符格式,您还可以使用preg_split解决方案,如此处所示https://stackoverflow.com/a/36851287/1427878