Solved

How to get from directory every file which has prefix "_th."?

Posted on 2009-07-12
19
382 Views
Last Modified: 2013-12-13
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

0
Comment
Question by:AndyPSV
  • 9
  • 7
  • 3
19 Comments
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836273
I think you might want to use scandir() and iterate over the results set.
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836282
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836291

<?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

0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 6

Expert Comment

by:basic612
ID: 24836302
Use glob to return an array of file names

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

0
 
LVL 6

Assisted Solution

by:basic612
basic612 earned 100 total points
ID: 24836307
Use glob to return an array of file names

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

0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836324
@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
0
 

Author Comment

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

Author Comment

by:AndyPSV
ID: 24836389
anybody knows how to modify the sample above?
0
 
LVL 6

Expert Comment

by:basic612
ID: 24836397
try this one:

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

Open in new window

0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836401
Good grief!  What level of PHP are you using?
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836409
Can you please tell us the values for the defined constants and the undefined variables in that script?
0
 

Author Comment

by:AndyPSV
ID: 24836410
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....../
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836411
"But, how to get: http://localhost....../"

Do you mean how to turn the directory addresses into links?
0
 

Author Comment

by:AndyPSV
ID: 24836413
_PATH = C:\Program Files\WebServ\httpd\
URL = http://localhost/
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24836415
Sorry - the building is being closed, so I have to leave now.  I will look at it again in the morning.  Best regards, ~Ray
0
 

Author Comment

by:AndyPSV
ID: 24836417
Yes, str_replace?
0
 

Author Comment

by:AndyPSV
ID: 24836418
I want to be universal, after uploading to other linux machine etc
0
 
LVL 109

Accepted Solution

by:
Ray Paseur earned 400 total points
ID: 24836419
Yes, almost certainly.  Use foreach() to iterate over the array.

Gotta go!
0
 

Author Comment

by:AndyPSV
ID: 24836431
$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
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction A frequently asked question goes something like this:  "I am running a long process in the background and I want to alert my client when the process finishes.  How can I send a message to the browser?"  Unfortunately, the short answer …
Introduction JSON is an acronym for JavaScript Object Notation.  It is a text-string data transport mechanism, capable of representing simple or complex data structures in a consistent and easy-to-read manner.  Similar in concept to XML, but more e…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to count occurrences of each item in an array.

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question