PHP div для каждых 12 изображений - PullRequest
2 голосов
/ 06 сентября 2010

У меня есть этот кусок кода:

<?
include( "http://api.flickr.com/services/feeds/photos_public.gne?id=22352410@N07&lang=en-us&format=php" );
$i = 0;
    foreach($feed['items'] as $item) {
    preg_match("/<img src=\"([^\"]+)\" .*? \/>/", $item['description'], $matches);
    $img_html = $matches[0];
    $img_src = $matches[1];
    $medium_url = ereg_replace("_m", "_s", $img_src);
        echo "$img_html";
    }

?>

Как я могу сделать так, чтобы каждое число N изображений появлялось внутри <div></div> Пример:

<div class="container">
<img src="1.jpg" /> 
<img src="2.jpg" /> 
<img src="3.jpg" /> 
<img src="4.jpg" /> 
<img src="5.jpg" /> 
<img src="6.jpg" /> 
<img src="7.jpg" /> 
<img src="8.jpg" /> 
<img src="9.jpg" /> 
<img src="10.jpg" /> 
<img src="11.jpg" /> 
<img src="12.jpg" /> 
</div>
<div class="container">
<img src="13.jpg" /> 
<img src="14.jpg" /> 
<img src="15.jpg" /> 
<img src="16.jpg" /> 
<img src="17.jpg" /> 
<img src="18.jpg" /> 
<img src="19.jpg" /> 
<img src="20.jpg" /> 
<img src="21.jpg" /> 
<img src="22.jpg" /> 
<img src="23.jpg" /> 
<img src="24.jpg" /> 
</div>

и т. Д..

Любые идеи ??

Большое спасибо !!!

Ответы [ 6 ]

2 голосов
/ 06 сентября 2010

Вы можете проверить с помощью %12. В вашем цикле вы добавляете счетчик $j, в каждом цикле вы увеличиваете $j.

Когда $j % 12 === 0, вам нужно изменить свой div, добавив </div><div class="container">.

Не забывайте о первой и последней <div> разметках.

1 голос
/ 20 июля 2014

О двойном div: Переместите оператор if, который проверяет, есть ли остаток вниз, ниже оператора, увеличивающего счетчик, и он не создаст двойной div:

<?
include( "http://api.flickr.com/services/feeds/photos_public.gne?id=22352410@N07&lang=en-us&format=php" );
$i = 0;
echo "<div class='container'>";
foreach($feed['items'] as $item) 
{
     preg_match("/<img src=\"([^\"]+)\" .*? \/>/", $item['description'], $matches);
     $img_html = $matches[0];
     $img_src = $matches[1];
     $medium_url = ereg_replace("_m", "_s", $img_src);
     echo "$img_html";
     $i++;
     if($i % 12 === 0)
          print "</div><div class='container'>";
}
print "</div>";
?>
1 голос
/ 06 сентября 2010

Должен это сделать!

<?
include( "http://api.flickr.com/services/feeds/photos_public.gne?id=22352410@N07&lang=en-us&format=php" );
    $i = 0;
    echo "<div class='container'>";
    foreach($feed['items'] as $item) 
    {
         if($i % 12 === 0)
              print "</div><div class='container'>";
         preg_match("/<img src=\"([^\"]+)\" .*? \/>/", $item['description'], $matches);
         $img_html = $matches[0];
         $img_src = $matches[1];
         $medium_url = ereg_replace("_m", "_s", $img_src);
         echo "$img_html";
         $i++;
    }
    print "</div>";
?>
0 голосов
/ 06 сентября 2010

Добавление к тому, что сказали другие

  • Перед использованием $match.
  • ereg_replace следует всегда проверять значение возврата 100 * *.Вместо этого используйте preg_replace.Так как вы просто делаете замену текста, вы должны использовать str_replace
0 голосов
/ 06 сентября 2010

Вместо использования foreach используйте простой цикл for со счетчиком, а затем используйте MOD на счетчике, чтобы определить, делится ли текущая итерация на N.

MOD: http://php.net/manual/en/internals2.opcodes.mod.php

Для цикла: http://www.tizag.com/phpT/forloop.php

0 голосов
/ 06 сентября 2010

У вас есть $i=0, но вы его не используете.Там также нет 12-строчный алгоритм нумерации страниц.Как насчет того, чтобы попробовать $i++ где-нибудь в вашем цикле и подумать о том, куда вставить if ($i==12) или if ($i%12) где-нибудьИзвините, я не собираюсь кормить с ложечки.Это основная проблема, которую вы найдете в учебниках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...