Php 使用html十进制代码和URL编码显示图像名称

Php 使用html十进制代码和URL编码显示图像名称,php,html,Php,Html,我构建了一个web应用程序来管理客户的备件,它附带了手册作为标准的零件id。我检查了它的零件id是唯一的编号。使用MYSQL v5.5.16和使用PHP v5.3.8的web界面存储记录 根据客户要求,他们希望在文件夹中列出备件图像。基本上,当用户输入记录并上传图像时,我根据存储在数据库中的零件id重命名图像,并将上传的图像复制到文件夹中 是的,当用户显示图像(部件id:2412039301…等)时,它工作良好。当零件id随1/8S40003一起提供时,正如您所知,图像名称不能与某些字符(/\:

我构建了一个web应用程序来管理客户的备件,它附带了手册作为标准的零件id。
我检查了它的零件id是唯一的编号。使用MYSQL v5.5.16和使用PHP v5.3.8的web界面存储记录

根据客户要求,他们希望在文件夹中列出备件图像。基本上,当用户输入记录并上传图像时,我根据存储在数据库中的零件id重命名图像,并将上传的图像复制到文件夹中

是的,当用户显示图像(部件id:2412039301…等)时,它工作良好。当零件id随1/8S40003一起提供时,正如您所知,图像名称不能与某些字符(/\:*?“<>|)一致

我还将
放在
标记和
标题之间('Content-type:text/html;charset=utf-8');
放在页面顶部

我简化了,只需将“/”符号编码为html十进制代码->
/;

将图像名称存储到数据库中似乎效果良好,上传图像效果100%,我还手动在文件夹中检查图像

但在显示带有

<img src='../Images/Spare parts/1/8S40003.png' />
我检查了“查看源代码”上的一个标记,它与上面的类似,但没有给出解决方案


感谢您。

正如chirag在回复中指出的,问题是文件系统不接受像
/
这样的字符。因此,您可能在文件名中存储了带有
&
的图像

因此,要在url中使用混乱的图像名称,您需要使用:
urlencode(str_replace(“/”,“&/;”,$id))


如果您提出了一个从部件id生成文件名的更可靠的方案,例如通过对文件名应用rawurlencode,可能会更好。这将导致在html链接中引用图像时应用两次url编码,但它是可靠的:
urlencode(rawurlencode($id))

使用
rawurlencode($imgName)向我显示存储imagesTry的目标文件夹路径
-@Tigger它的工作原理很神奇!谢谢=)是的,它可能会给我们提供更可靠的方案,但它将很难让web浏览器读取图像名称,因为它的两次编码和图像不会像我们预期的那样出现。感谢您的解释,但使用
rawurlencode($id)
的工作原理很有魅力!多谢各位=)我测试了$id compost
/;
%2F
,并与rawurlencode()一起应用,图像出现在页面上,这可能会发生,因为web浏览器会对页面上出现的任何编码字符解码一次。=)
<img src='../Images/Spare parts/1%2F8S40003.png' />