这个问题来自这个 How to proportionally size images to fit dimensions of 200px x 150px thumbnail in css?,但是因为我觉得它不再是CSS相关的问题,我想我会创建一个新问题.我试图按比例将图像放入缩略图这里 http://giantmango.com/contest.我尝试将css img标签设置为下面,但所有图像的大小都是200px x 200px.没有另一条css线的高度为200px.我怀疑它是别的东西.
img {
max-height: 150px;
max-width: 200px;
}

调用此函数以返回图像并认为它可能是这样.

<?PHP 
    $content = get_the_content('Concept');
    $content = apply_filters('the_content',$content);
    list($col_class,$grid_img) = adjust_grid_image(
        $content,$col_w,$gap_w,$max_col,$flg_img_forcelink,$flg_obj_fit
    );
?>
        <div <?PHP post_class('grid-item ' . $col_class); ?> id="post-<?PHP the_ID(); ?>">
            <?PHP if ($grid_img) echo '<div class="grid-image">' . $grid_img . '</div>'; ?>

这些是我设置的参数.

$col_w = 200; // width of grid column
$gap_w = 7;  // padding + margin-right (15+15+5)
$max_col = 5; // max column size (style div.x1 ~ xN)
$flg_img_forcelink = true;   // add/overwrite a link which links to a single post (permalink).
$flg_img_extract = true;    // in single post page,extract thumbnail link to an original image.
$flg_obj_fit = 'large-fit';  // none | small-fit | large-fit ... how to fit size of object tag.

这是运行adjust_grid_image的functions.PHP文件,但我不确定它在做什么.这是否将我的图像设置为200px x 200px?如果是这样,我必须更改哪个参数才能将200px硬编码为图像的高度,以便我可以在css中设置它?

/* 
 * return class name and image tag (resized w/h attributes) to fit a grid.
 */
function adjust_grid_image($content,$flg_obj_fit) {
    global $post;

    $col_class_base = 'x';
    $col_class = $col_class_base . '1'; // default column-width class
    $arr_w = array();
    for ($i=0; $i<$max_col; $i++) {
        $arr_w[] = ($col_w * ($i+1)) + ($gap_w * $i);
    }

    $grid_img = '';
    $w = $h = 0;
    $matches1 = $matches2 = $matches3 = array();

    // search *first* img/object tag
    preg_match('/<(img|object)(?:[^>]+?)>/',$content,$matches1);

    if ($matches1[1] == 'img') {
        preg_match('/<img(?:.+?)src="(.+?)"(?:[^>]+?)>/',$matches2);
        $img_url = ($matches2[1]) ? $matches2[1] : '';
        if ($img_url) {
            // first,try to get attributes
            $matches_w = $matches_h = array();
            preg_match('/width="([0-9]+)"/',$matches2[0],$matches_w);
            preg_match('/height="([0-9]+)"/',$matches_h);
            if ($matches_w[1] and $matches_h[1]) {
                $w = $matches_w[1];
                $h = $matches_h[1];
            }
            else {
                // ... or get original size info.
                $upload_path = trim( get_option('upload_path') ); 
                $mark = substr(strrchr($upload_path,"/"),1); // default mark is 'uploads'
                preg_match("#$mark(/.+)$#",$img_url,$split_url);
 // split($mark,$img_url)
                if ($split_url[1] != null) {
                    $img_path = $upload_path . $split_url[1];
                    list($w,$h) = @getimagesize($img_path);
                }
            }
        }

        for ($i=0; $i<$max_col; $i++) { // set new width and col_class
            if ( ($i >= $max_col - 1) or ($w < $arr_w[$i+1]) ) {
                $nw = $arr_w[$i];
                $col_class = $col_class_base . ($i+1);
                break;
            }
        }
        $nh = (!$w or !$h) ? $nw : intval( ($h * $nw) / $w ); // set new height

        $grid_img = $matches2[0];
        // add width/height properties if nothing
        $flg_no_w = (strpos($grid_img_edit,'width=') === false);
        $flg_no_h = (strpos($grid_img_edit,'height=') === false);
        if ($flg_no_w or $flg_no_h) {
            $grid_img_close = (substr($grid_img,-2) == '/>') ? '/>' : '>';
            $grid_img_edit = substr( $grid_img,-(strlen($grid_img_close)) );
            $grid_img_edit .= ($flg_no_w) ? ' width="0"' : '';
            $grid_img_edit .= ($flg_no_h) ? ' height="0"' : '';
            $grid_img = $grid_img_edit . $grid_img_close;
        } 
        // replace new width/height properties
        $grid_img = preg_replace('/width="(\d+)"/','width="'. $nw .'"',$grid_img);
        $grid_img = preg_replace('/height="(\d+)"/','height="'. $nh .'"',$grid_img);

        // check image link
        //$chk_imglink = '/(<a(?:.+?)rel="(?:lightBox[^"]*?)"(?:[^>]*?)>)'. preg_quote($matches2[0],'/') .'/';
        $chk_imglink = '/(<a(?:.+?)href="(?:.+?\.(?:jpe?g|png|gif))"(?:[^>]*?)>)'. preg_quote($matches2[0],'/') .'/';
        if ($flg_img_forcelink) {
            $grid_img = '<a href="'. get_permalink() .'" title="' . esc_attr($post->post_title) . '">' . $grid_img . '</a>';
        }
        else if ( preg_match($chk_imglink,$matches3) ) {
            $grid_img = $matches3[1] . $grid_img . '</a>';
        }
    }
    else if ($matches1[1] == 'object') {
        preg_match('/<object(.+?)<\/object>/',$matches2);

        $matches_w = $matches_h = array();
        preg_match('/width="([0-9]+)"/',$matches_w);
        preg_match('/height="([0-9]+)"/',$matches_h);
        if ($matches_w[1] and $matches_h[1]) {
            $w = $matches_w[1];
            $h = $matches_h[1];
        }
        else {
            $flg_obj_fit = 'none';
        }

        //set col_class (and new width if in '*-fit' condition)
        if ($flg_obj_fit == 'small-fit') {
            for ($i=0; $i<$max_col; $i++) { 
                if ($i >= $max_col -1) {
                    $nw = $arr_w[$i];
                    $col_class = $col_class_base . ($i+1);
                    break;
                }
                else if ( $w < $arr_w[$i+1] ) {
                    $nw = $arr_w[$i];
                    $col_class = $col_class_base . ($i+1);
                    break;
                }
            }
        }
        else if ($flg_obj_fit == 'large-fit') {
            for ($i=$max_col -1; $i>=0; $i--) { 
                if ( $w > $arr_w[$i] ) {
                    if ($i >= $max_col -1) {
                        $nw = $arr_w[$i];
                        $col_class = $col_class_base . ($i+1);
                    }
                    else {
                        $nw = $arr_w[$i+1];
                        $col_class = $col_class_base . ($i+2);
                    }
                    break;
                }
                if ($i == 0) {
                    $nw = $arr_w[$i];
                    $col_class = $col_class_base . ($i+1);
                }
            }
        }
        else {
            for ($i=0; $i<$max_col; $i++) { 
                if ($i >= $max_col -1) {
                    $col_class = $col_class_base . ($i+1);
                    break;
                }
                else if ( $w < $arr_w[$i] ) {
                    $col_class = $col_class_base . ($i+1);
                    break;
                }
            }
        }
        $nh = (!$w or !$h) ? $nw : intval( ($h * $nw) / $w ); // set new height

        $grid_img = $matches2[0];
        if ($flg_obj_fit == 'small-fit' or $flg_obj_fit == 'large-fit') {
            // replace new width/height properties
            $grid_img = preg_replace('/width="(\d+)"/',$grid_img);
            $grid_img = preg_replace('/height="(\d+)"/',$grid_img);
        }
    }

    return array($col_class,$grid_img);
}

感谢您查看所有这些内容.

这是一些中间功能.代码中可能还有一些其他部分使用此函数的返回值并实际输出HTML.您应找到此部件并注释输出宽度和高度设置的部件.

但要注意,如果你的图像具有可变比例并且你重新缩放它们以保持这些比例(通过CSS),它们将不再适合网格.它们在页面上看起来比现在更加分散.

编辑现在您已经添加了更多详细信息,我认为应该足以删除以注释//添加宽度/高度属性开头的部分,如果没有

如何编写php函数或设置参数来返回图像的无高度值?的更多相关文章

  1. PHP:如何获取preg_match_all的字符串索引?

    假设我有两个正则表达式,和文字我想要的是使用preg_match获取以下索引:有没有办法使用preg_match_all获取这些索引,而不是每次循环文本?

  2. php – 使用HTML嵌入代码替换文本中的YouTube URL

    如果在字符串中找到,此功能会嵌入youtube视频.我的问题是什么是最简单的方法来捕获嵌入的视频(iframe,只有第一个,如果还有更多)并忽略其余的字符串.好吧,我想我明白了你要完成的事情.用户输入一个文本块(某些评论或其他内容),您在该文本中找到一个YouTube网址,并将其替换为实际的视频嵌入代码.这是我修改它的方式:由于您已经使用第一个preg_match()找到了URL,因此无需再运行其

  3. 在PHP中将UTF字符与preg_match匹配:(* UTF8)适用于Windows但不适用于Linux

    我有一个简单的正则表达式来检查用户名:在本地测试(使用WAMP的Windows7)中,这将允许使用UTF字符的用户名(例如é或).但是,当我在实际托管该站点的服务器上进行测试时,我收到以下警告:Warning:preg_match()[function.preg-match]:CompilationFailed:(*VERB)notrecognizedatoffset5in/home/sites/

  4. PHP正则表达式漏洞下注

    一个同事今天与我打赌,他知道一种提供特殊格式的字符串的方法,可以通过以下正则表达式检查,并仍然提供扩展名为.PHP或.jsp或.asp的文件名:我很努力地尝试了自己,搜索网络,我无法找到一个可能使这样的事情发生的缺陷.我可以俯视吗?鉴于处理“空字节”漏洞,这里还有什么问题?

  5. 如何在php中返回正则表达式,而不是替换

    我试图在HTML文本块中提取图像的第一个src属性,如下所示:创建正则表达式以匹配src属性没有问题,但是如何返回第一个匹配的src属性,而不是替换它?从倾注PHP手册,似乎preg_filter()会做的伎俩,但我不能依赖最终用户具有PHP>5.3.所有其他PHP正则表达式函数似乎都是preg_match()的变体,返回一个布尔值,或者preg_replace,它替换了一些匹配项.有没有直接的方法来返回PHP中的正则表达式匹配?

  6. 如何在php中执行模式为数组的preg_match?

    我不确定这最终是否会更快.无论是preg_match还是PHP,都必须循环它们.如果我不得不猜测我猜单个匹配将接近快速且更容易阅读和维护.最后,如果你正在寻找性能,我认为最重要的是将非正则表达式匹配转换为简单的“字符串包含”检查.我想你的一些支票必须是简单的字符串检查,比如查看页面上是否有“此网站已关闭”.这样做:避免尽可能多的preg_match()可能是你最好的收获.strpos()比preg_match()快很多.

  7. php – 用于替换preg_match_all的多字节函数?

    我正在寻找一个替换preg_match_all()的多字节函数.我需要一个能给我一个匹配字符串数组的字符串,比如来自preg_match()的$matches参数.函数mb_ereg_match()似乎没有这样做–它只给我一个布尔值,指示是否有任何匹配.看看mb_*函数page,我不会随便看到替换preg_match()的功能.我该用什么?

  8. php – 警告:preg_match()[function.preg-match]:未知的修饰符’/’

    我正在尝试使用preg_match来返回页面源代码中包含在“”中的所有URL.我正在使用的代码是我收到以下错误:你的问题是你需要分隔符(我选择)来使用模式.有关更多信息,请参见preg_match()手册页.

  9. php – 剥离坏的Windows文件名字符

    我发现这个函数测试字符串是否是Windows文件名和文件夹友好:我宁愿拥有的是一个从字符串中删除所有不良内容的函数.我试着基本上用preg_replace替换preg_match但没有雪茄.继Gordon的reference之后,这给出了:

  10. PHP中的PHP的`preg_match_all`功能

    在PHP中,如果我们需要匹配像[“one”,“two”,“three”]这样的东西,我们可以使用以下正则表达式和preg_match.通过使用括号,我们还能够提取单词一,二和三.我知道Java中的Matcher对象,但我无法获得类似的功能;我只能提取整个字符串.我将如何模仿Java中的preg_match行为.使用Matcher,要获取组,您必须使用Matcher.group()方法.例如:记住group是相同的整个匹配序列.Exampleonideone资源:>Javadoc–Matcher.group

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部