【发布时间】:2016-10-06 20:21:15
【问题描述】:
我们当前的系统保存与其父组名称匹配的文件。因此,名为“我的设备”的组保存了一个名为“我的设备.jpg”的图像。这很好用,尽管在 PHP 和 JS 的某处将名称转换为“My%20Devices.jpg”时存在一些问题,但在此之前我能够将空格转换为加号。
现在我们需要考虑其他特殊字符,例如撇号,以便可以将组命名为“Joe 的设备”。我需要某种方法将其转换为可以是文件名的东西。但是我不能只去掉特殊字符,否则如果有人使用“Joes Devices”的组名(不带撇号)可能会发生冲突。
我尝试了 urlencode() 和 rawurlencode(),但它们使用百分号,这对于 URL 来说非常有用,但对于文件名来说却不是。我认为 base64_encode() 会更好,即使它是一个更长的字符串。但它包含不适合文件名的等号。
有没有办法将字符串转换为文件名友好的字符串,可以解码回原来的字符串?还是我需要完全重新编码此功能并使用 ID 匹配或其他什么?
【问题讨论】:
-
您能解释一下“父组”是什么意思吗?
-
您可以 md5 文件名,这样您的文件名中就没有任何空格或特殊字符。请记住 - 即使这不太可能 - 您仍然可能会遇到碰撞。
-
只是家庭中WiFi上的一组设备。但它可以是一组任何东西,这只是意味着我必须将文件命名为与任意组名相同。
-
哦,看起来我无法对 MD5 进行解码...
-
如果我没记错的话,base64 总是以等号结尾,所以你可以使用 base64_encode 然后去掉结尾的等号。但是当你解码时,在解码之前添加尾随等号