嘿同事们,
我想要完成的是使用类image
从目录中获取图像的动态方式。
我坚持提供一个返回匹配的精确字符串,但是当尝试使用返回的匹配回显"
时,如果未提供整个字符串,那么图像将链接到部分字符串加上扩展
<?php $image = new image; ?>
使用:
调用类函数<?php $image -> get_image('this_string_1',''); ?>
图像目录内容
<?php $path = $_SERVER['DOCUMENT_ROOT'].'/images/;'?>
this_string_1.png
this_string_2.png
this_string_3.png
班级:
<?php
class image{
function get_image($name,$class){
if(strlen($class)==0){ $class="default"; }
##@@[ Checks the type of image
global $doc_root,$html_path;
if($handle = opendir($doc_root.'/images/')){
while(false !==($value = readdir($handle))){
if($value !== '..' && $value!=='.'){
$extention;
$ext_jpeg = substr($value,-3);
if($ext_jpeg=='jpg'){
$extention=".jpg";
}
$ext_png = substr($value,-3);
if($ext_png=='png'){
$extention=".png";
}
$ext_gif = substr($value,-3);
if($ext_gif=='gif'){
$extention='.gif';
}
}
switch($extention){
case '.jpg':
if(preg_match("/$name/",$value,$result)){
foreach($result as $jpg){
echo '<img class="'.$class.'" src="'.$html_path.'/images/'.$jpg.'.jpg">';
}
}
break;
case '.png':
if(preg_match("/$name/",$value,$result)){
foreach($result as $png){
echo '<img class="'.$class.'" src="'.$html_path.'/images/'.$png.'.png">';
}
}
break;
case '.gif':
if(preg_match("/$name/",$value,$result)){
foreach($result as $gif){
echo '<img class="'.$class.'"src="'.$html_path.'/images/'.$gif.'.gif">';
}
}
break;
}
}
}
}
}
?>
我确信有很多方法可以完成这样的事情。任何建议都将不胜感激。
根据马丁斯的建议。 我删除了if和switch语句,并将其替换为&#34; substr&#34;在第二个if语句中。
<?php
class image{
function get_image($name,$class){
if(strlen($class)==0){ $class="default"; }
global $doc_root,$html_path;
if($handle = opendir($doc_root.'/images/')){
while(false !==($value = readdir($handle))){
if($value !== '..' && $value!=='.' && substr($value, 0, -4)==$name){
echo '<img src="'.$html_path.'/images/'.$value.'">';
}
}
}
}
}
?>
答案 0 :(得分:0)
1)我没有看到你的if
语句序列分配$extention
的重点。你为什么不这样做$extention = substr($value,-4)
?
2)switch($extention)
必须位于if($value !== '..' && $value!=='.')
3)你想通过preg_match
实现什么目标?
如果您只想完全匹配名称,请执行substr($value, 0, -4) == $name
。那么这依赖于有3个字符的扩展,什么不完美,但你已经依赖它了。