前提・実現したいこと
PHP初心者です。
PHPで「フォルダから写真のファイルを読み込むコード」を読み解きたく、
PHPの学習サイトや参考書を見ながら解読しているんですが、
実際のコードを理解するのが難しいのでどなたかご教授いただきたいです。
発生している問題・エラーメッセージ
while(FALSE !== ($photo = $dire[$i]->read())){ if (mb_substr($photo, 0, 1) != '.' && mb_substr($photo, -3) == 'jpg') { array_push($images, $photodirs[$i].$photo); } }
の部分の「mb_substr($photo, -3) == 'jpg'」をなぜ−3にする必要があるのかわからなく困っています。
### 全体のソースコード
PHP
1 2 <section class="wrap"> 3 <nav class="side-nav"> 4 <ul> 5 <li> 6 <a href="index.php">Portfolio</a> 7 </li> 8 <li> 9 <a href="prof.php">Profile</a> 10 </li> 11 <li> 12 <a href="">Contact</a> 13 </li> 14 <li> 15 <a href=""><i class="fab fa-instagram"></i></a> 16 </li> 17 </ul> 18 </nav> 19 <main class="content"> 20 <ul class="masonry"> 21 22<?php 23 $dirName = 'photo/'; 24 $dir = dir($dirName); 25 $photodirs = array(); 26 $images = array(); 27 while(FALSE !== ($fileName = $dir->read())){ 28 if (mb_substr($fileName, 0, 1) != '.') { 29 array_push($photodirs, $dirName.$fileName.'/'); 30 } 31 } 32 33 for($i = 0 ; $i < count($photodirs); $i++) { 34 $dire[$i] = dir($photodirs[$i]); 35 36 while(FALSE !== ($photo = $dire[$i]->read())){ 37 if (mb_substr($photo, 0, 1) != '.' && mb_substr($photo, -3) == 'jpg') { 38 array_push($images, $photodirs[$i].$photo); 39 } 40 } 41 } 42 43 for($i = 0 ; $i < count($images); $i++){ 44 45 $s = intval (strpos( $images[$i], '/'))+1; 46 $e = intval (strrpos($images[$i], '/')) -intval ($s); 47 $pe = intval (strrpos($images[$i], '/'))+1 ; 48 $pim = mb_substr($images[$i], $pe); 49 $pim = mb_substr($pim, 0, -4); 50 $path = mb_substr($images[$i], $s, $e); 51 52 $imgin = getimagesize($images[$i]); 53 54 if($imgin[0]>$imgin[1]){ 55 echo '<li class="ms-tile s2"><a href="gallery.php?cat='.$path.'&img='.$pim.'"><img src="'.$images[$i].'"></a></li>'; 56 }else{ 57 echo '<li class="ms-tile"><a href="gallery.php?cat='.$path.'&img='.$pim.'"><img src="'.$images[$i].'"></a></li>'; 58 } 59 60 } 61?> 62 63 64 65 </ul> 66 67 </main> 68 </section> 69
取り出したいファイルの構成
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/09 08:29