質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

2回答

4062閲覧

PHPのglobについて

yas_usa

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2019/01/31 08:15

フォルダの中にある-thum.jpg以外のJPGファイルの数をカウントしようとしています。

現状2種類のフォルダ群があり、1種類のフォルダは、「.jpg」と「-thum.jpg」(サムネイル)があり各ファイルは同数のファイルの為、下記コードで対処しています。

$files = glob($dir."*.jpg"); if ($files){$filecount = count($files);} $pic_count = $filecount / 2 + 1;

しかし2種類目は、「*-thum.jpg」がないので、半分の数になってしまいます。
「+ 1」は、ファイル名の数字と呼び出しが、「0」空ではなく1からの為です。

$pic_count = $filecount / 2 + 1; $pic_count2 = $filecount + 1;

として、2種類目のフォルダ群の対処をしても良いとは思っているのですが、

$files = glob($dir."*.jpg");

上記コードに「*-thum」を含まない様にして、フォルダ2群への変更を避けたいと思っているのですが、

$files = glob($dir."*[^-thum].jpg");

書き方としてこれであっていますでしょうか?

globは重いと聞いているのですが、PHPと正規表現共に勉強中の初心者の為可視性が良いという事で、各フォルダのファイル数は2桁から3桁ですが、glob関数を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

$files = glob($dir."*[^-thum].jpg");
書き方としてこれであっていますでしょうか?

違います。そもそもglobの中に書くのは正規表現ではありません。
ざっくりglob($dir."*.jpg") でリストを取得しておいてあとからthubを含むものを除外するのがわかりやすいでしょう。

投稿2019/01/31 08:29

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yas_usa

2019/01/31 09:57

やはりこの中だけでというのは難しいんですね、ありがとうございます!
guest

0

preg_grepで、正規表現にマッチする物を取り除きます。

PHP

1$pic_count = count( preg_grep("/-thum\.jpg$/",glob($dir."*.jpg"),PREG_GREP_INVERT) );

投稿2019/01/31 08:28

編集2019/01/31 08:33
otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/01/31 08:42

"[^-thum].jpg" は、 "-" と "t" と "h" と "u" と "m" のどれでもない1文字の後に、".jpg" が続いた物 という意味です。
yas_usa

2019/01/31 10:18

秀丸エディタの簡単な感じでと思ったのですが、[]のあとに「.」や「+」が無いと1文字になりますね。 そもそも別物ですが。。 コードに関しまして、 $pic_count = count( preg_grep("/-thum\.jpg$/",glob($dir."*.jpg"),PREG_GREP_INVERT) ) +1; で、対処できました。 preg_grepが、まだよく分かっていないので勉強をさらに深めようと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問