我有一个图像文件夹,其中有近200张图像。我的图片名称是:
101.png
102.png
103.png
(it continues until 300.png)
这些图像是我的书在mysql数据库中的图像。例如;
id | book_name
101| aaaaa
102| bbbbb
所以,我想将图片名称更改为图书名称。也就是说,“aaaa”书的图像名称将是aaaa.png而不是101.png。有没有快速的方法来做到这一点? 感谢....
答案 0 :(得分:2)
这是一个简单的例子:
$db = new PDO('mysql:host=myhost;dbname=mydb', 'myuser', 'mypass');
$books = $db->query('SELECT * FROM books');
$images_folder = '/var/bookimages/';
foreach ($books as $book) {
$old_image_file = realpath($images_folder.$book['id'].'.jpg');
if ($old_image_file) {
$clean_book_name = filter_var($book['book_name'], FILTER_SANITIZE_ENCODED);
$new_image_file = realpath($images_folder).$clean_book_name.'.jpg';
rename($old_image_file, $new_image_file);
}
}
rename()
功能才有效。在你的情况下,这应该工作正常。filter_var
来检查数据库中的名称是否有效。这是一项安全措施。如果数据库的文件名包含“../”,则该文件不会做坏事。这是必要的,因为rename()
也可以移动文件,有人可能会利用它。答案 1 :(得分:1)
这是一个概念证明。它应该让你开始。
$books = array('100' => 'grapes of wrath', '101' => 'where the red fern grows');
echo '<pre>'; print_r($books); echo '</pre>';
foreach($books AS $key => $value){
$current_image = $key.'.jpg';
$new_image = $value.'.jpg';
echo $current_image.' & '.str_replace(" ", "_",$new_image).'<br />';
//rename($current_image, $new_image);
}
答案 2 :(得分:0)
将图像名称更改为书籍名称是不好的做法。 如果您的名字有特殊符号怎么办?如果名字太长会怎么样?
这是使用ID的更简单和通用的解决方案。