PHP从子目录读取图片展示时如何调整路径前缀适配数据库存储
解决方案
你代码中glob使用../前缀是为了正确从当前脚本位置定位到图片存储目录,该读取逻辑无需调整,只需要在输出存入数据库的路径时做前缀处理即可。
可直接使用的修改后代码
<?php // 读取文件的逻辑保持不变,glob需要相对路径才能正确找到服务器上的文件 $files = glob("../assets/images/newsimages/*.*"); var_dump($files); // 支持的格式数组提到循环外,避免重复初始化 $supported_file = array( 'gif', 'jpg', 'jpeg', 'png' ); for ($i = 0; $i < count($files); $i++) { $image = $files[$i]; $ext = strtolower(pathinfo($image, PATHINFO_EXTENSION)); if (in_array($ext, $supported_file)) { // 仅在此处处理输出的路径,去掉开头的../ $save_path = str_replace('../', '', $image); // 也可以用更稳妥的拼接方式,避免路径异常:$save_path = 'assets/images/newsimages/' . basename($image); echo '<option value="'. $save_path .'">' . basename($image) . '</option>'; } else { continue; } } ?>
两种路径处理方式说明
- 字符串替换方式:直接移除路径中所有
../字符,适配目录层级有变动的场景 - 固定前缀拼接方式:直接用要求的路径前缀加文件名,生成的路径更可控,不会出现意外的相对路径字符
内容的提问来源于stack exchange,提问作者Kaido
相关产品推荐
相关产品推荐

