Php 文件名中的特殊符号不';在mPDF中显示不正确

Php 文件名中的特殊符号不';在mPDF中显示不正确,php,mpdf,Php,Mpdf,我有密码: $mpdf = new mPDF(); $mpdf->WriteHTML('some html text'); return $mpdf->Output("123!@#$%^&*()_+<><?:}{P}" . '.pdf', 'I'); $mpdf=新的mpdf(); $mpdf->WriteHTML(“一些html文本”); return$mpdf->Output(“123!@#$%^&*()”首先,这个问题与PDF

我有密码:

    $mpdf = new mPDF();
    $mpdf->WriteHTML('some html text');
    return $mpdf->Output("123!@#$%^&*()_+<><?:}{P}" . '.pdf', 'I');
$mpdf=新的mpdf();
$mpdf->WriteHTML(“一些html文本”);

return$mpdf->Output(“123!@#$%^&*()”首先,这个问题与PDF生成无关。您想创建一个文件系统对象,其名称中包含在某些shell中具有特殊含义的字符:

  • 是输出重定向操作符
  • 是任意字符通配符
  • 是Windows驱动器号分隔符
要实现这一点,您需要通过一个您无法控制的附加层(我假设是一个web浏览器)来实现

某些文件系统(并非全部)将对象名称视为原始字节字符串,不施加任何条件。我记得在我读了一本书解释了这一点之后,我能够在一个旧的Unix框中创建包含
*
字符和换行符的文件。然而,文件名要经过几个软件层,其中许多实际上需要理解e名称,其中一些可能会对文件系统本身施加额外的限制。因此,即使您成功创建了该文件,以后也可能无法将其读回


因此,浏览器会主动删除有问题的字符。在某些情况下,它可能过于热心(
在Unix上是安全的),但它只是试图防止潜在问题(例如,Unix文件通过电子邮件发送或复制到Windows共享)您在服务器上无法避免此问题。

首先,此问题与PDF生成无关。您希望创建一个文件系统对象,其名称中包含在某些shell中具有特殊含义的字符:

  • 是输出重定向操作符
  • 是任意字符通配符
  • 是Windows驱动器号分隔符
要实现这一点,您需要通过一个您无法控制的附加层(我假设是一个web浏览器)来实现

某些文件系统(并非全部)将对象名称视为原始字节字符串,不施加任何条件。我记得在我读了一本书解释了这一点之后,我能够在一个旧的Unix框中创建包含
*
字符和换行符的文件。然而,文件名要经过几个软件层,其中许多实际上需要理解e名称,其中一些可能会对文件系统本身施加额外的限制。因此,即使您成功创建了该文件,以后也可能无法将其读回


因此,浏览器会主动删除有问题的字符。在某些情况下,它可能过于热心(
在Unix上是安全的),但它只是试图防止潜在问题(例如,Unix文件通过电子邮件发送或复制到Windows共享)在服务器上也无法避免这种情况。

我相信某些Unix文件系统允许文件名中包含任何字符,甚至星号或换行符(至少几年前是这样)但大多数其他文件系统都没有。你的操作系统是什么?更重要的是,你为什么认为这是个好主意?系统是linux mint 17。也许这不是个好主意,但我应该这样做,直到,浏览器会试图阻止你射伤自己的脚。我发现,如果我尝试将此文件保存在FF中,浏览器会将文件名还原为“document.pdf”。然后很好,我想唯一的原因是“顾客要的”"。很抱歉,有些时候,客户要求的东西从技术角度看毫无意义,因为他们根本不知道潜在的问题。您必须礼貌地向他们解释,有些字符您根本无法在文件名中使用。我相信某些Unix文件系统允许在文件名中使用任何字符,甚至星号或者换行(至少几年前是这样)但大多数其他文件系统都没有。你的操作系统是什么?更重要的是,你为什么认为这是个好主意?系统是linux mint 17。也许这不是个好主意,但我应该这样做,直到,浏览器会试图阻止你射伤自己的脚。我发现,如果我尝试将此文件保存在FF中,浏览器会将文件名还原为“document.pdf”。然后很好,我怀疑唯一的原因是“客户要求”。对不起,有时候客户要求的东西从技术角度看毫无意义,因为他们根本不知道潜在的问题。你必须礼貌地向他们解释,有些字符你根本无法在文件名中使用。