我有代码:
$mpdf = new mPDF();
$mpdf->WriteHTML('some html text');
return $mpdf->Output("123!@#$%^&*()_+<><?:}{P}" . '.pdf', 'I');
但是当我在文件名中保存文档时,符号<>?:
会显示-----
。
可以修复吗?
答案 0 :(得分:2)
首先,这个问题与PDF生成无关。您希望创建一个文件系统对象,其名称包含在某些shell中具有特殊含义的字符:
<
是输入redirecton运算符>
是输出重定向运算符?
是任意字符通配符:
是Windows驱动器号分隔符并且您希望通过一个您无法控制的附加层来实现它(我假设是一个Web浏览器)。
某些文件系统(并非所有文件系统)将对象名称视为原始字节字符串,并且不强加任何条件。我记得能够在一个包含*
字符和换行符的旧Unix框中创建文件,之后我读了一本书,解释了这样的事情是可能的。但是,文件名通过几个软件层,其中许多实际上需要理解名称,其中一些可能会对文件系统本身施加额外的限制。因此,即使您设法创建该文件,您也可能无法在以后阅读它。
因此,浏览器会主动删除有问题的字符。在某些情况下,它可能过于热心(:
在Unix上是安全的)但它只是试图防止潜在的问题(例如,Unix文件通过电子邮件发送或复制到Windows共享)并且你没有什么可以做的在服务器上做以避免这种情况。