webForumDet fria alternativet

Hjälp att få ut rätt filnamn...

PHP

2 svar · 440 visningar · startad av Annakay

Medlem sedan sep. 2003143 inlägg
Frågan#1

Jag har ett problem. :l

Jag har installerat ett contrib till oscommerce som ska hjälpa till att hitta produktbilder som inte används i en webbshop.

Bilderna har formatet:
filename1.jpg
filename1.jpg.thumb_120x90.jpg
filename1.jpg.thumb_240x180.jpg

(Urbota dumt, ja...)

Jag vill exkludera alla filer med "thumb" ur sökresultatet. Man kan ange ett "pattern" för detta:

// Remove images matching pattern from the check, ie put 'thumb' to exclude all images with 'thumb' as part of the name (or directory).
$pattern = 'thumb';

Kodsnutten som hämtar ut filnamnen:

function GetImageListFromServer($dir,&$files)
{
  $dp=opendir($dir);
  while (false!=($file=readdir($dp)))
  {
// ******** AZERISH enleve gifs         if( strpos($file, 'jpg') || strpos($file, 'gif') || strpos($file, 'png') ){
                if( strpos($file, 'jpg')  ){
                $locn = $dir.'/'.$file;
                $str = sprintf("%s", $locn);
        $files[] = $str;
                                      }
  }
  closedir($dp);//close the folders
}

Jämförelsen med "pattern":

if (tep_not_null($pattern)) {

	sort($files);// server file list
  for ($i = 0; $i < count($files); ++$i)  // remove any pattern matched images from the server list
	{
		if (strpos(strtolower($files[$i]),strtolower($pattern))) { unset($files[$i]); }
	}
													}

PROBLEMET är ju att funktionen GetImageListFromServer hämtar ut filnamnet genom att stanna vid första förekomsten av "jpg". Enligt mitt exempel på filnamn så hinner den ju aldrig hämta "thumb"... Hur ändrar jag så att HELA filnamnet kommer med och kan jämföras med "pattern" sen?

Medlem sedan dec. 2004736 inlägg
#2

strpos($file, 'jpg') letar ju upp första matchningen av jpg i $file. Du behöver en funktion som hittar den sista istället. Utan att kunna allt för mycket PHP tycker jag att strripos($file, 'jpg') skulle vara rätt i det här fallet. Testa!

Medlem sedan sep. 2003143 inlägg
#3

Jag testade men den hittar fortfarande filer med "thumb" i. Från mitt i bokstaven K och framåt..?! Hmm... Nån timeout kanske?
Om jag kikar via ftp på vilka filer det finns, så finns det gott om thumbs-filer innan bokstaven K också...

Det verkar bli invecklat nu, jag kom på en sak:

Eftersom thumbs-filerna inte lagras i databasen så blir ju listan fel ändå. Om jag tar bort filer med "thumbs" ur sökresultaten så kommer en massa onödiga thumb-filer som är associerade till en fil som inte längre används att ligga kvar i bildmappen... Gaaah...

255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)