AndyPSV
asked on
How to get from directory every file which has prefix "_th."?
I've got.
$path[0] = URL.'v/'.$this->u['id'].'/'; $_name = _PATH.'v/'.$this->u['id'].'/';
$i = 0; if($h = opendir($pth)) {
while(false !== ($f = readdir($h))) {
if($f <> '.' and $f <> '..' and substr($f,0,4) <> IMG_TH and substr($f,0,8) <> IMG_AV)
if(is_readable($pth.$f))
if(!is_dir($pth.$f)) {
$stat = stat($pth.$f);
$item['size'] = sprintf("%.2f",$stat['size']/1000);
$x .= '<tr class=\'v\''; if($this->u['avatar'] == $f) $x .= 'style=\'background-color:#ccc\' '; $x .= 'onclick=\'javascript:_get("pic","'.$f.'");\'>
<td valign=\'top\'><img src=\''.TPL.'img/dir/file.gif\' alt=\'\' /></td>
<td valign=\'top\'><div class=\'fl\'><a href=\'#\' onclick=\'javascript:_get("pic","'.$f.'");\'>'.$f.'</a><div class=\'clearfix\' id=\''.$i.'\' style=\'display:none;\'>Do you want to delete picture? <a href=\''.URL.'profile/photo/d/'.$f.'\'>Yes</a> <a href=\''.URL.'profile/photo/\'>No</a></div></div><div class=\'fr\'>'.$item['size'].'kb </div></div class=\'fix\'></div></td>
<td valign=\'top\'>'._ago($stat['mtime']).' ago</td>
<td valign=\'top\' class=\'sp4\'><img src=\''.TPL.'img/ico/del2.gif\' class=\'pointer\' id=\'pp'.$i.'\' alt=\'delete picture\' /> <a href=\''.URL.$this->u['id'].'/p/'.substr($f,0,-4).'\'>→</a></td>
</tr>
<script type=\'text/javascript\'>$(document).ready(function(){$("#pp'.$i.'").click(function(){$("#'.$i.'").toggle("slow")})});</script>';
$i++;
if(!file_exists($_name.IMG_TH.$f)) include_once(URL.DIR_LIB.'thumb/'.INX.PHP.'?f='.$path[0].$f.'&w='.IMG_.'&h='.IMG_.'&id='.$this->u['id'].'&t='.$f.'&pre=th');
}
} closedir($h);
} $x .= '</table></div>'; return $x;
I think you might want to use scandir() and iterate over the results set.
<?php // RAY_temp_scandir.php
error_reporting(E_ALL);
$file_array = scandir( getcwd() );
$my_files = array();
foreach ($file_array as $name)
{
if (substr($name,0,4) == '_th.')
{
$my_files[] = $name;
}
}
var_dump($my_files);
Use glob to return an array of file names
$files = glob('_th.*');
$files = glob('_th.*');
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
@basic612: Good point. I always forget about glob(), but it is an easy way to get the information.
I stopped using it when I had some special characters in the file names and it was having trouble with that. Also, I'm fairly sure that scandir() and glob() do not touch() the files, but it might be worth verifying that if the date of last use matters to the OP.
Best to all, ~Ray
I stopped using it when I had some special characters in the file names and it was having trouble with that. Also, I'm fairly sure that scandir() and glob() do not touch() the files, but it might be worth verifying that if the date of last use matters to the OP.
Best to all, ~Ray
ASKER
shit
Fatal error: Call to undefined function: scandir() in C:\Program Files\WebServ\httpd\mod\u\ index.php on line 25
Fatal error: Call to undefined function: scandir() in C:\Program Files\WebServ\httpd\mod\u\
ASKER
anybody knows how to modify the sample above?
try this one:
$files = glob('_th.*');
print_r($files);
Good grief! What level of PHP are you using?
Can you please tell us the values for the defined constants and the undefined variables in that script?
ASKER
I get:
Array
(
[0] => C:\Program Files\WebServ\httpd\v/1/_t h.AndyPSV. gif
[1] => C:\Program Files\WebServ\httpd\v/1/_t h.AndyPSVa vatar.gif
[2] => C:\Program Files\WebServ\httpd\v/1/_t h.AndyPSVa vatar.jpg
[3] => C:\Program Files\WebServ\httpd\v/1/_t h.AndyPSVa vatar2.gif
[4] => C:\Program Files\WebServ\httpd\v/1/_t h.AndyPSVa vatar2_cop y.gif
[5] => C:\Program Files\WebServ\httpd\v/1/_t h.images_1 1.jpg
[6] => C:\Program Files\WebServ\httpd\v/1/_t h.images_5 .jpg
[7] => C:\Program Files\WebServ\httpd\v/1/_t h.images_6 .jpg
[8] => C:\Program Files\WebServ\httpd\v/1/_t h.images_7 .jpg
[9] => C:\Program Files\WebServ\httpd\v/1/_t h.images_8 .jpg
)
But, how to get: http://localhost....../
Array
(
[0] => C:\Program Files\WebServ\httpd\v/1/_t
[1] => C:\Program Files\WebServ\httpd\v/1/_t
[2] => C:\Program Files\WebServ\httpd\v/1/_t
[3] => C:\Program Files\WebServ\httpd\v/1/_t
[4] => C:\Program Files\WebServ\httpd\v/1/_t
[5] => C:\Program Files\WebServ\httpd\v/1/_t
[6] => C:\Program Files\WebServ\httpd\v/1/_t
[7] => C:\Program Files\WebServ\httpd\v/1/_t
[8] => C:\Program Files\WebServ\httpd\v/1/_t
[9] => C:\Program Files\WebServ\httpd\v/1/_t
)
But, how to get: http://localhost....../
"But, how to get: http://localhost....../"
Do you mean how to turn the directory addresses into links?
Do you mean how to turn the directory addresses into links?
ASKER
_PATH = C:\Program Files\WebServ\httpd\
URL = http://localhost/
URL = http://localhost/
Sorry - the building is being closed, so I have to leave now. I will look at it again in the morning. Best regards, ~Ray
ASKER
Yes, str_replace?
ASKER
I want to be universal, after uploading to other linux machine etc
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
$files = glob('v/'.$this->u['id'].' /'.'_th.*' );
print_r($files);
Array
(
[0] => v/1/_th.AndyPSV.gif
[1] => v/1/_th.AndyPSVavatar.gif
[2] => v/1/_th.AndyPSVavatar.jpg
[3] => v/1/_th.AndyPSVavatar2.gif
[4] => v/1/_th.AndyPSVavatar2_cop y.gif
[5] => v/1/_th.images_11.jpg
[6] => v/1/_th.images_5.jpg
[7] => v/1/_th.images_6.jpg
[8] => v/1/_th.images_7.jpg
[9] => v/1/_th.images_8.jpg
)
now it's brilliant
print_r($files);
Array
(
[0] => v/1/_th.AndyPSV.gif
[1] => v/1/_th.AndyPSVavatar.gif
[2] => v/1/_th.AndyPSVavatar.jpg
[3] => v/1/_th.AndyPSVavatar2.gif
[4] => v/1/_th.AndyPSVavatar2_cop
[5] => v/1/_th.images_11.jpg
[6] => v/1/_th.images_5.jpg
[7] => v/1/_th.images_6.jpg
[8] => v/1/_th.images_7.jpg
[9] => v/1/_th.images_8.jpg
)
now it's brilliant