2012-05-29 2 views
0

미리보기 이미지의 디렉토리를 스캔하여 페이지에 표시하는 스크립트가 있습니다. 멋지게 작동하지만 축소 이미지를 클릭 할 수 없으며이 경우가 좋을 것입니다. echo "<img src='$thumbnail' class='resizesmall'>";은 미리보기 이미지가 표시되는 선입니다. 나는 그것을 깨뜨리지 않고 PHP 내부의 큰 이미지에 경로를 쓰는 방법을 모르겠습니다. 어쩌면 foreach 문에서이 작업을 수행해야할까요? 당신의 도움을 주셔서 감사합니다?큰 이미지로 연결되는 작은 이미지가 반복됩니다.

$dir = "../mysite/thumbnails/"; 
$dh = opendir($dir); 

// echo "$dh"; 
$gallery = array(); 
while($filename = readdir($dh)) 
{ 
$filepath = $dir.$filename; 

//pregmatch used to be ereg 
if (is_file($filepath) and preg_match("/\.png/",$filename)) 
{ 
$gallery[] = $filepath; 
} 
} 
sort($gallery); 
foreach($gallery as $thumbnail) 
{ 
echo "<img src='$thumbnail' class='resizesmall'>"; 
} 
?> 
</div> 
<??> 

답변

1

가장 쉬운 방법은 엄지 손가락과 전체 크기 이미지의 이름이 같은 상황을 설정하는 것입니다. 따라서 thumb/image1.png 및 full/image1.png가있을 수 있습니다. 그런 다음 $ thumbnail을 사용하는 대신 변수 $ image 또는 비슷한 코드를 사용하여 코드를 더 잘 읽습니다. 또한 $ 이미지 경로가 파일 이름으로 끝나도록 $ filepath를 혼합 밖으로 남겨두기를 원할 것입니다.

foreach($gallery as $image) 
{ 
    echo "<a href='full/$image'><img src='thumb/$image' class='resizesmall'></a>"; 
} 

오류 또는 잘못된 UX를 방지하기 위해 일치하는 이미지가 있는지 확인하기 위해 몇 가지 검사를하고 싶을 수 있습니다. 그러나 위의 코드가 작동해야합니다.

+0

스크립트에서 $ filepath를 완전히 제거합니까? 그것을 깨뜨리고있는 것 같습니다. 그게 필요하지 않니? – expiredninja

+1

기본적으로 원본 스크립트는 파일 경로와 파일 이름을 모두 포함하는 배열을 작성하여 변수 $ thumbnail이 "path/to/filename"과 동일하게 만들었습니다. 그러나 두 경로 모두에 올바르게 연결하려면 엄지 및 전체 크기 이미지를 파일 이름이 각 루프마다 사용되는 것을 원하지 않는다면 변수를 파일 이름과 동일하게 지정하면됩니다. 따라서 여전히 $ filepath가 필요하지만 엄지 디렉토리에있는 파일을 읽는 경우에만 필요합니다. 죄송합니다 조금 더 명확하게하지. – Valjas

+0

내가 $ gallery [] = $ filepath를 변경했습니다. $ gallery [] = $ filename;으로 잘 작동하는 것 같습니다. – expiredninja

관련 문제