Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak sie pozbyc podkreslnika w nazwie zdjec?
Forum PHP.pl > Forum > Przedszkole
blank_screen
Witam,
mam taki skrypt ktory uploaduje mi masowo zdjecia z katalogu na serwerze i tworzy od razu miniatury, tylko ze zdjecie nie moze miec odstepow(spacji) w nazwie, bo nie zostanie stworzona miniatura, wiec wszedzie musze stosowac podkreslnik, moje pytanie czy daloby sie jakos zmodyfikowac ten skrypt zeby te podkreslniki znikaly w momencie tworzenia miniatur i zdjecia glownego? Patrzylem po innych stronach i zdjecia po zapisaniu na dysk maja podkreslniki a na stronie ich nie maja, mozna oczywiscie zrobic to recznie, ale co jesli masz kilka tysiecy zdjec?

Oto skrypt:

  1. <?php
  2. require('config.php');
  3. $cat = $_GET['id'];
  4.  
  5. function strip_ext($name)
  6. {
  7. $ext = strrchr($name, '.');
  8. if($ext !== false)
  9. {
  10. $name = substr($name, 0, -strlen($ext));
  11. }
  12. return $name;
  13. }
  14.  
  15.  
  16. $MainC = mysql_query("SELECT * FROM category WHERE id='$cat'") or die(mysql_error());
  17. while($MC = mysql_fetch_array($MainC)) {
  18. $m = $MC['main_category'];
  19. }
  20.  
  21. $mcat = $m;
  22. $path = "imgs/";
  23. $dir_handle = @opendir($path) or die("Unable to open $path");
  24. echo "<textarea name='sql' rows='30' cols='90'>";
  25. echo "User Ip Address: ";
  26. echo $_SERVER["REMOTE_ADDR"]
  27. ;
  28. Batch Image Adding System
  29. This script will now add all images in the imgs/ directory into the DB
  30. ";
  31. echo "Starting.....
  32. ";
  33. echo "Connecting to $path
  34. ";
  35. echo "Connecting to MYSQL DB
  36. ";
  37.  
  38.  
  39. while ($file = readdir($dir_handle))
  40. {
  41. $fext = array_pop(explode('.', $file));
  42. $fname = basename($file, '.'.$fext);
  43. $title = $fname;
  44. $cat = $_GET['id'];
  45. $mcat = $_GET['mid'];
  46.  
  47. $ck = mysql_query("SELECT COUNT(id) FROM pics WHERE title='$title'") or die(mysql_error());
  48. while($k = mysql_fetch_array($ck)){
  49.  
  50. if($k['COUNT(id)'] > 0) { echo "$file already exist.... Skipping $file....
  51. "; } else {
  52.  
  53. //Thumb System
  54. if($file!="." && $file!=".." && $file!="upload" && $file!="Thumbs.db") {
  55.  
  56. $file1 = ereg_replace(" ","_",$file);
  57. rename(''.PATH.'imgs/'.$file1,''.PATH.'imgs/'.$file);
  58.  
  59. $ftype = end(explode('.',$file));
  60. $image_name = "./imgs/".$file;
  61.  
  62. $img_name = $file;
  63. $img2_name = basename($file);
  64. list($width,$height) = getimagesize(URL.'imgs/'.$file1);
  65.  
  66. $new_image_name = "./thumb/".$file;
  67.  
  68.  
  69. $new_width = '100';
  70. $new_height = '100';
  71.  
  72. $image_p = imagecreatetruecolor('100','100');
  73.  
  74. if($ftype == 'gif') {
  75. $image = imagecreatefromgif($image_name);
  76. imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$width,$height);
  77. imagegif($image_p,$new_image_name);
  78. echo("Thumb Created!");
  79. }
  80.  
  81. elseif($ftype == 'jpg' OR $ftype == 'jpeg') {
  82. $image = imagecreatefromjpeg($image_name);
  83. imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$width,$height);
  84. imagejpeg($image_p,$new_image_name,100);
  85. echo("Thumb Created!");
  86. }
  87.  
  88. elseif($ftype == 'png') {
  89. $image = imagecreatefrompng($image_name);
  90. imagecopyresampled($image_p,$image,0,0,0,0,$new_width,$new_height,$width,$height);
  91. imagepng($image_p,$new_image_name,100);
  92. echo("Thumb Created!");
  93. }
  94.  
  95. }
  96.  
  97. if($file!="." && $file!=".." && $file!="upload" && $file!="Thumbs.db") {
  98. mysql_query("INSERT INTO pics (`id`, `title`, `thumb`, `img`, `main_category`, `category`) VALUES ('', '$title', '$file', '$file', '$m', '$cat')");
  99. echo "Added $file..... into $m
  100. ";
  101. }
  102.  
  103. } } }
  104. echo "Please ignore any errors that have 'already exist', it means its a duplicate entry.
  105. ";
  106. echo "</textarea>";
  107. closedir($dir_handle);
  108.  
  109. ?>
Wicepsik
  1. echo str_replace('_', '', 'To_jest_miniaturka_bez_podkreślenia');
blank_screen
a moglbys mi podpowiedziec w ktorym miejscu mam wkleic ta linijke? Oczywiscie wiem ze nie wystarczy mi kopiuj, wklej, az taki zielony nie jestem;) wiem, ze musze sobie to zmodyfikowac;)
pozdrawiam
Wicepsik
Nie jestem pewien ale tutaj

  1. imagegif($image_p,$new_image_name);
  2. //na
  3. imagegif($image_p,str_replace('_','',$new_image_name));

I tak w każdym rozszerzeniu
ArekJ
To będzie chyba 68 linia.
Z
  1. $new_image_name = "./thumb/".$file;

na
  1. $new_image_name = str_replace('_', '','./thumb/".$file');
blank_screen
zaprezentowaliscie dwa rozne rozwiazania, przetestuje oba i dam znac, mam tylko pytanie do ArekJ czy tam gdzies nie umknal Ci jeden cudzyslow, zazwyczaj one chodza parami, no ale moge sie na tym nie znac;) jeszcze nie probowalem czy to dziala, ale zaraz sie dowiem;)

niestety, zadne z tych rozwiazan nie bylo skuteczne, nazwy nadal maja podkreslnik, a jakby tego bylo malo, to w obu przypadkach miniatury nie zostaly utworzone...:/

poprawka, miniatury zostaly utworzone, ale nie wyswietlaja sie na stronie i zamiast podkreslnika, nie ma spacji, a po prostu powstaje jeden dluzszy wyraz, jaka moze byc tego przyczyna? Ktos pomoze?
ArekJ
Przyczyna jest jedna(co do powstawania jednego wyrazu) kod powinien wyglądać tak:
  1. $new_image_name = str_replace('_', ' ','./thumb/".$file');

Tamten znaczek co uznałeś za cudzysłów to były dwa apostrofy i miała być między nimi spacja.
Co do problemu z wyświetlaniem, to zobacz co próbuje wyświetlić(w źródle strony) i wtedy się pewnie wszystko wyjaśni ;]
Pawel_W
Cytat(ArekJ @ 10.08.2009, 06:31:04 ) *
Przyczyna jest jedna(co do powstawania jednego wyrazu) kod powinien wyglądać tak:
  1. $new_image_name = str_replace('_', ' ','./thumb/".$file');

Tamten znaczek co uznałeś za cudzysłów to były dwa apostrofy i miała być między nimi spacja.
Co do problemu z wyświetlaniem, to zobacz co próbuje wyświetlić(w źródle strony) i wtedy się pewnie wszystko wyjaśni ;]

mieszacie mu, narąbaliście tych cudzysłowów, a przecież można tak:
  1. $new_image_name = './thumb/' . str_replace('_', ' ', $file);

i już wszystko widać
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.