我很新手从给定的网址中提取不同的数据。但是,我发现以下代码可以提取尺寸大于列表宽度和高度的图像。
以这种方式,我得到2或3张图片。如何自动获取最大尺寸的图像?
如果在下面的循环中提到图像尺寸,如何只显示一张图像。
代码是比较慢的。给输出需要时间。它可以更快吗?
我刚刚复制了代码。如果对这个循环中发生的事情给出一点评论,那么这将在代码理解方面做得很多
$string = $co->fetch_record ($url2);
$image_regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
preg_match_all($image_regex, $string, $img, PREG_PATTERN_ORDER);
$images_array = $img[1];
?>
<div class="images">
<?php
$k = 0;
for ($i = 0; $i <= sizeof ($images_array); $i++) {
if(@$images_array[$i]) {
if(@getimagesize (@$images_array[$i])) {
list($width, $height, $type, $attr) = getimagesize (@$images_array[$i]);
if($width >= 50 && $height >= 50) {
echo "<img src='" . @$images_array[$i] . "' width='400' id='" . $k . "' >";
$k++;
}
}
}
}
?>
<input type="hidden" name="total_images" id="total_images" value="<?php echo --$k ?>"/>
</div>
<?php
我将非常感谢你的帮助。谢谢
答案 0 :(得分:0)
$string = $co->fetch_record ($url2);
$image_regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
preg_match_all($image_regex, $string, $img, PREG_PATTERN_ORDER);
$images_array = $img[1];
?>
<div class="images">
<?php
$k = 0;
$area = 0;
$largest_image;
for ($i = 0; $i <= sizeof ($images_array); $i++) {
if(@$images_array[$i]) {
if(@getimagesize (@$images_array[$i])) {
list($width, $height, $type, $attr) = getimagesize (@$images_array[$i]);
// calculate current image area
$latest_area = $width * $height;
// if current image area is greater than previous
if($latest_area > $area) {
$area = $latest_area;
$larest_image = $images_array[$i];
$k++;
}
}
}
}
// at this point the largest image should be in the $largest_image variable
// print out $largest_image here
?>
<input type="hidden" name="total_images" id="total_images" value="<?php echo --$k ?>"/>
</div>
<?php