无法显示名称带有特殊字符的文件

时间:2016-09-03 16:48:03

标签: php regex cakephp

有一个上传框,用户可以上传文档ID的图像。问题是,无论是谁实现了这个上传框,如果有特殊字符,都不会对其进行编程以对文件名进行编码。所以现在服务器中有一堆上传文件带有特殊字符,如

14592-Carte  d'identité-072616143337.pdf

因此,当他们尝试在浏览器中将其可视化时,他们所拥有的链接是:

<a href="https://www.fortadpays.com/upload/memdocs/14592-Carte  d'identité-072616143337.pdf">See File</a>

哪个不行。我尝试使用urlencode()对文件名进行编码,但它仍无效。

如何显示带有特殊字符的文件?

我是否必须首先更改使用特殊字符上传的所有文件的文件名,例如:

14592-Carte  d'identité-072616143337.pdf

将更改为:

14592-Carte-didentite-072616143337.pdf

为了能够在浏览器中显示?我使用什么功能?

此外,我应该使用什么功能来更改原始上传框中文件名的名称,以便它不再上传带有特殊字符名称的文件?

1 个答案:

答案 0 :(得分:1)

您可以使用preg_replace()函数:

preg_replace('/[^\da-z]/i', '-', $string);

这会将所有非字母数字字符替换为&#34; - &#34;

您可以使用此功能在上传后直接重命名上传的文件