Link to home
Start Free TrialLog in
Avatar of AndyPSV
AndyPSVFlag for United Kingdom of Great Britain and Northern Ireland

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?&nbsp;&nbsp;&nbsp;&nbsp;<a href=\''.URL.'profile/photo/d/'.$f.'\'>Yes</a>&nbsp;&nbsp;<a href=\''.URL.'profile/photo/\'>No</a></div></div><div class=\'fr\'>'.$item['size'].'kb&nbsp;&nbsp;&nbsp;&nbsp;</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).'\'>&rarr;</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;

Open in new window

Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

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);

Open in new window

Use glob to return an array of file names

$files = glob('_th.*');

SOLUTION
Avatar of basic612
basic612
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
@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
Avatar of AndyPSV

ASKER

shit
Fatal error: Call to undefined function: scandir() in C:\Program Files\WebServ\httpd\mod\u\index.php on line 25
Avatar of AndyPSV

ASKER

anybody knows how to modify the sample above?
try this one:

$files = glob('_th.*');
print_r($files);

Open in new window

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?
Avatar of AndyPSV

ASKER

I get:

Array
(
    [0] => C:\Program Files\WebServ\httpd\v/1/_th.AndyPSV.gif
    [1] => C:\Program Files\WebServ\httpd\v/1/_th.AndyPSVavatar.gif
    [2] => C:\Program Files\WebServ\httpd\v/1/_th.AndyPSVavatar.jpg
    [3] => C:\Program Files\WebServ\httpd\v/1/_th.AndyPSVavatar2.gif
    [4] => C:\Program Files\WebServ\httpd\v/1/_th.AndyPSVavatar2_copy.gif
    [5] => C:\Program Files\WebServ\httpd\v/1/_th.images_11.jpg
    [6] => C:\Program Files\WebServ\httpd\v/1/_th.images_5.jpg
    [7] => C:\Program Files\WebServ\httpd\v/1/_th.images_6.jpg
    [8] => C:\Program Files\WebServ\httpd\v/1/_th.images_7.jpg
    [9] => C:\Program Files\WebServ\httpd\v/1/_th.images_8.jpg
)

But, how to get: http://localhost....../
"But, how to get: http://localhost....../"

Do you mean how to turn the directory addresses into links?
Avatar of AndyPSV

ASKER

_PATH = C:\Program Files\WebServ\httpd\
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
Avatar of AndyPSV

ASKER

Yes, str_replace?
Avatar of AndyPSV

ASKER

I want to be universal, after uploading to other linux machine etc
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of AndyPSV

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_copy.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