初心者です。わかりにくいかもしれませんがよろしくお願いします。

特定のディレクトリにある画像ファイルをすべて取得して
サムネイル表示しようとしています。
画像サイズを取得するのに、getimagesize関数を使いますが、

//対象ディレクトリ
$opdir = "./"; //img2ディレクトリ

$dir = opendir($opdir);
while(
($ent = readdir($dir)) !== false ) {
$str = strstr($ent,".");
$imginfo = getimagesize($ent,$image_info);
var_dump($imginfo);
}

こんな感じで、同一の階層にある画像はサイズがきちんと取得できるのですが、
//対象ディレクトリ
$opdir = "../"; //img1ディレクトリ
のように、別階層のディレクトリを指定すると、
エラー表示になってしまいます。

エラー内容
Warning: getimagesize(aisatu.gif): failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\test\img1\img2\img.php on line 27
bool(false)

別の階層の画像サイズは取得できないのでしょうか。
それとも方法が間違っているのでしょうか。

A 回答 (3件)

#1 の方の補足になりますが、


『getimagesizeに渡すパラメータにはファイルへのPATHも含めましょう』
という事です。
具体的には以下のようにして下さい。

<?php
$opdir = "./";
$dir = opendir($opdir);
while( ($ent = readdir($dir)) !== false ) {
if ( $ent != "." && $ent != ".." ) {
$ent = "$opdir$ent";
$imginfo = getimagesize($ent,$image_info);
var_dump($imginfo);
}
}
?>

getimagesizeに限らず、ファイルを扱う際には必ずPATHを含めるような
癖をつけておくと良いかもしれません。
    • good
    • 0
この回答へのお礼

お忙しいところ、詳しいご説明をありがとうございました。
表示させるのを画像だけにするため、何とか試行錯誤して以下のようにしてみました。

$kaku = array(".gif",".jpg",".png");//表示させるファイルの拡張子
while(
($ent = readdir($dir)) !== false ) {
$str = strstr($ent,".");
if (array_search($str,$kaku) !== false ) {
$ent = $opdir . $ent;
$imginfo = getimagesize($ent,$image_info);

これで何とか思い通りに動いてくれました。
ありがとうございます。

そしてとても申し訳ないのですが、もう一つとんでもなく無知な質問をしてもよろしいでしょうか。

if ( $ent != "." && $ent != ".." ) {

の、"." と ".." というのは、何を表しているのでしょうか。
read()の出力結果を見ると、確かにファイルパスと一緒に"."と".."が出てきたので気になっていたのですが、
調べてもわかりませんでした。
申し訳ありませんが、よろしくお願いします。

お礼日時:2005/04/21 16:39

"." と ".." は、それぞれ、カレントディレクトリと親ディレクトリとなります。


詳しくは、以下の参照ページをご覧下さい。

# 尚、Windowsでは"dir /a"とする事で、
# "ls -la"と同様な結果を得る事が出来ます。

参考URL:http://www.ipe.tsukuba.ac.jp/~muto/uxdir.html
    • good
    • 0
この回答へのお礼

そういうことだったんですね。
ありがとうございます。
勉強になりました。

お礼日時:2005/04/21 19:43

readdir()はディレクトリエントリを返すだけですので、opendir()で指定したパスが含まれる事をありません。



エラーメッセージ「getimagesize(aisatu.gif)」から、分かるかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
まだちょっとよく飲み込めてません。
もう少し勉強してみます。

お礼日時:2005/04/21 16:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QTo be continued(つづく)って?

ドラマの最後などで見る「つづく」という意味の「To be continued」というのは、文法的にはどういう文の省略なんでしょうか?
よろしくお願いします。

Aベストアンサー

This story is to be continued.

直訳すると、「このお話は続く予定です」となります。

be to do で予定を表します。(この場合、do にあたるのが 受身のbe continued )

これから、「To be continued.」で、「次回へ続く」「以下、次回で」という意味の成句になったと思われます。

Q$ka = $_REQUEST[\"FFF\"];が変数に代入できなくて困ってます┐(´~`;)┌

今任意の名前でファイルを生成するPHPを作っています。ファイルの中身に$ka = $_REQUEST[\"FFF\"];というコードをファイル作成時に書き込みたいんですが、どうも変数 $HTMLにうまく代入されてくれません。もし、どこが問題なのかわかる方どなたかいらっしゃいましたらアドバイスお願いしますΣo(≧~≦)o。


下にコードを書いておきます。


<form name="form" action="A.php" method="POST">
HTMLファイルの名前
<input name="DAI" type="text">
<input type="submit" value="作成">
</form>
<?php
$DAI = $_REQUEST["DAI"];
?>





<!-- 【この下のコード$ka = $_REQUEST[\"FFF\"];がうまく変数$HTMLに代入されません】 -->
<? $HTML="$ka = $_REQUEST[\"FFF\"];" ?>





<?php
$fp = fopen("$DAI.php","a");
fputs($fp,$HTML);
fclose($fp);
echo "ファイル作成成功!";
?>
<?
print"$DAIが作成されました";
?>
<?
print"<A href=\"http://localhost/$DAI.php\">作成された貴方のファイルへのリンク</A>";
?>

今任意の名前でファイルを生成するPHPを作っています。ファイルの中身に$ka = $_REQUEST[\"FFF\"];というコードをファイル作成時に書き込みたいんですが、どうも変数 $HTMLにうまく代入されてくれません。もし、どこが問題なのかわかる方どなたかいらっしゃいましたらアドバイスお願いしますΣo(≧~≦)o。


下にコードを書いておきます。


<form name="form" action="A.php" method="POST">
HTMLファイルの名前
<input name="DAI" type="text">
<input type="submit" value="作成">
</form>
<?p...続きを読む

Aベストアンサー

<? $HTML='$ka = $_REQUEST["FFF"];' ?>
こういうことでしょうか?

シングルクォートは変数を評価しません。

Qonとto / continuingとcontinued

英語やり直し組です

U.S. National Security Council Spokesman Gordon Johndroe says President Bush joins the Pakistani people in their continued concern about the state of emergency and the curtailment of basic freedoms.

(1)their continued concernと書かれていますがcontinuingではないのでしょうか?
「彼らの続いている関心事」のような意味だと思うのですが何故continuedなのでしょうか?またcontinuingだとおかしいのでしょうか?

Johndroe told reporters in Texas that the White House is calling on all sides to refrain from violence and to work together to put Pakistan back on the path to democracy.

(2)calling on all sidesのonはtoではないのでしょうか?
「四方八方に呼びかけている」という意味だと思うのですがtoではないのでしょうか?onでもわかりますが、どちらでもいいのでしょうか?
(3)to put Pakistan back on the path to democracy.のon~toはto~ofだと駄目なのでしょうか?
to return(restore?) Pakistan to the path of democracy.のようだとニュアンスが変わってくるのでしょうか?

お願いします。

英語やり直し組です

U.S. National Security Council Spokesman Gordon Johndroe says President Bush joins the Pakistani people in their continued concern about the state of emergency and the curtailment of basic freedoms.

(1)their continued concernと書かれていますがcontinuingではないのでしょうか?
「彼らの続いている関心事」のような意味だと思うのですが何故continuedなのでしょうか?またcontinuingだとおかしいのでしょうか?

Johndroe told reporters in Texas that the White ...続きを読む

Aベストアンサー

(1)their continued concernと書かれていますがcontinuingではないのでしょうか?

過去分詞を使うことにより、受身の動作であることを示しています。つまり、自分から続けたいわけではなく、他の原因があるため、続けざるを得ないということ。つまり、様々な政治状況があり、それらのために仕方なく続いていると言う意味。

(2)calling on all sidesのonはtoではないのでしょうか?

call on~ で「~を訪ねる」と言う意味があり、直接実際に呼びかけるというニュアンスが生まれます。call to~だと、遠くから声をかけるという感覚になるはず。また、to を使うと、all sides がどこか遠くのほうにあるような感覚になり、すでに存在している「各方面」を意味するには不適切。

(3)to put Pakistan back on the path to democracy.のon~toはto~ofだと駄目なのでしょうか?

put AA back on BB 「AAをBBに戻して置く」と言う意味。put があるので、on しか使えないでしょう。また、path to democracy は、「民主主義へ続く道」と言う意味で、現状は民主主義が実現されていないことを意味しています。path of democracy だと、「民主主義の道」となり、すでにある民主主義社会がどう進んでいくか、または、どう進んできたか、のような意味になります。

(1)their continued concernと書かれていますがcontinuingではないのでしょうか?

過去分詞を使うことにより、受身の動作であることを示しています。つまり、自分から続けたいわけではなく、他の原因があるため、続けざるを得ないということ。つまり、様々な政治状況があり、それらのために仕方なく続いていると言う意味。

(2)calling on all sidesのonはtoではないのでしょうか?

call on~ で「~を訪ねる」と言う意味があり、直接実際に呼びかけるというニュアンスが生まれます。call to~だと、遠く...続きを読む

Q$str=preg_replace('/\u3000/','  ',$str);

によってutf-8の空白文字をhtmlの空白文字に変換しようとしたのですがエラーになります
どうしたらいいのでしょうか?

Aベストアンサー

>そもそも?のところにコード表現で空白文字を入力する手段はないのでしょうか?
\xE3\x80\x80
で一応いいかと思いますが…

QContinued convergenceの訳し方

いつも御世話になります。
今回は下記文中に使用されている"continued convergence"の意味が
よくわかりません。直訳すれば「継続した集中(力)」というような
訳になるかとは思いますが、これでは日本語として違和感があり、いったい
何が言いたいのかイマイチよくわかりません。

英語、および日本語表現に自信のある方、お助けください…

【英文】Investment reflects continued convergence of musical
hardware and personal computer.

【訳】この度の投資は音楽機器とパーソナルコンピューターの継続した
集中?を反映したものである。

Aベストアンサー

convergenceは収束→近づく

The Himalayan mountain range has formed by collision and continued convergence of the Indian plate with the Eurasian plate
2つのプレートの継続した接近そして衝突

訳→この度の投資は音楽機器とパーソナルコンピューターの一体化が絶え間なく進展していることを反映したものである。

Q$a[0]='w';$a[1]='r';を1回で

$a=array();
$a[0]='w';
$a[1]='r';
2行目と3行目を$a=はてな('w','r');
のように書くことはできませんか?

Aベストアンサー

こんにちは。

$a = array ( 'w', 'r' );

でいけると思いますが。

http://fol.axisz.jp/php/man/php/function.array.html

Q[to be]のイメージがつかみたいのですが?

NHKラジオ英会話講座より(英作文の問題)
彼はとても健康なので100歳以上生きると思う。
He's so healthy that I think he'll live to be a hundred or more.
(質問)
(1)私の作った英文の間違いを教えて下さい。
He's so healthy that I think he'll live more than 100years old.
(2)正解に使われている[to be]はどう解釈すればいいのでしょうか?
「あること」「存在すること」という名詞的用法でしょうか?
この文章には、必ず[to be]は必要ですか?
(3)頁の末尾にto be continued(続く)などよく見かけますが、continueだけにするのと、ネイティブの受け取る感覚の違いを知りたいのですが?
(4)日常よく使われる[to be]を含んだ用語を幾つか教えて下さい。何とか、イメージをつかみたいのです。 以上

Aベストアンサー

こんにちは。9/25のご質問ではご丁寧なお返事を有難うございました。

ご質問1:
<(1)私の作った英文の間違いを教えて下さい。>

1.例文の日本語は「100歳以上」と書かれていますが、正確には「100歳以上まで」ということなのです。

2.つまり、he'll live more than 100years oldだと、「まで」にあたる英語が見当たらないのです。

3.この文を正解に導くには、接続詞untilを用いて
he'll live until he'll be more than 100years old
「100歳以上になるまで、生きる」
します。

これを前置詞untilを用いると間違いになるので、ご注意下さい。
例:
he'll live until more than 100years old(X)


ご質問2:
<(2)正解に使われている[to be]はどう解釈すればいいのでしょうか?>

1.副詞的用法になります。目的・程度・結果、などの解釈が可能です。

(1)目的の用法:
(直訳)「100歳になるように、生きる」

(2)結果の用法:
(直訳)「生きて、100歳になる」

(3)程度の用法:
(直訳)「100歳になるほど、生きる」

これらの直訳が、抄訳のような「100歳まで生きる」という、分かり易い意訳にまとめられているのです。


ご質問3:
<この文章には、必ず[to be]は必要ですか?>

必要です。to beを使わないのであれば、上記で回答したような接続詞が必要になります。


ご質問4:
<(3)頁の末尾にto be continued(続く)などよく見かけますが、>

1.to be continuedのto不定詞は副詞的用法で、「~しましょう」という独立文を導く用法なのです。
例:
To return.=Let us return.
「本題に入るとしよう」

2.これをcontinueに当てはめると
To be continued=Let it be continues.
「それを続かせるとしよう」→「次回に続く、、、、」
となるのです。


ご質問5:
<continueだけにするのと、ネイティブの受け取る感覚の違いを知りたいのですが?>

1.まず受身にする必要があります。例えばドラマで使われた場合、主体となるのは「ドラマ」で「ドラマが続く」となるからです。Continueと能動のままだと、ドラマでなく、ドラマ製作者にスポットライトが置かれ「我々が、続ける」となってしまいます。「続く」という自動詞にはならないからです。

2.continueには「続く」という自動詞もありますが、「中途のものが引き続き継続する」の意味で使われる場合は、他動詞を使います。
例:
continued from(on) page 20
「20ページから続く」

自動詞のcontinueはある動作・状態が引き続き行われる場合に使われ、補語Cを伴います。
例:
He continued obstinate.
「どこまでも強情をはった」

3.また、continuedだけだと、完了のニュアンスは表せますが、未来への指向性「これから~する」といった予定のニュアンスが表せないのです。To不定詞を用いることによって、それを出すことができるのです。

もしto不定詞を使わないなら、時制を表す文にする必要があります。
例:
It will be continued.
「それは、続くだろう」


ご質問6:
<(4)日常よく使われる[to be]を含んだ用語を幾つか教えて下さい。何とか、イメージをつかみたいのです>

1.副詞的用法:

To be honest「正直に言うと~」
To be frank「率直なところ~」
To be serious「真面目なはなし~」
といった副詞的な用法として、文頭に使われることがあります。これらは独立副詞句と呼ばれます。

2.名詞的用法:

To Be, Not To Be
「生きるか死ぬか、(それが問題だ)」
有名なハムレットの言葉ですが、このto不定詞は「~こと」という名詞的用法で、beは「ある」「存在する」という完全自動詞が→「生きる」という意味に転じたものです。

以上ご参考までに。
PS:今週末からまたバカンスでブルターニュ地方に一週間ほど出かけてきます。今回はクラシックスポーツカー愛好家の集まりに出席するのが目的で、ついでのバカンスです(仏人はバカンスとってばかりですね(笑))今回はPCを持っていかないので、回答はできませんが予めご了承下さい。

こんにちは。9/25のご質問ではご丁寧なお返事を有難うございました。

ご質問1:
<(1)私の作った英文の間違いを教えて下さい。>

1.例文の日本語は「100歳以上」と書かれていますが、正確には「100歳以上まで」ということなのです。

2.つまり、he'll live more than 100years oldだと、「まで」にあたる英語が見当たらないのです。

3.この文を正解に導くには、接続詞untilを用いて
he'll live until he'll be more than 100years old
「100歳以上になるまで、生きる」
します。

これを...続きを読む

Qループ forに関して for($i = $num ; $i < $max ; $i++)

phpの初心者です。

以下の記述ですが、上手にループしてくれません。

for($i = $num ; $i < $max ; $i++)

$num の部分に「0」を入れると稼動するのですが、変数を代入したいというのが希望です。

方法があったらご教授下さい。

Aベストアンサー

もう一度全体のコードを見直してみてください。
問題なく動作します。

$num = 1;
$max = 5;

for($i = $num ; $i < $max ; $i++){
echo $i."<br />";
}

Qafraid not to beの意味

現在高校3年生で、来年受験を控えている者です

Teachers can end up afraid not to be in control of the answer,afraid of losing their authority over the class
教師は、ついには答えを把握していないことではなく、教室における自分の権威を失うことを恐れるようになる可能性がある

ここでのafraidの用法なのですが、これは not A,Bという構造ですよね?
訳をみればそう分かったのですが、訳を見る前はnot to be in control of the answerをafraid+lose their authority over the classをafraidだと解釈していました。確かにこの場合は、2つのafraidしているものをandで繋ぐことで表現されますが、わざわざafraidを2つかくことで強調しているのかと思ってしまいました

この解釈がありえないとすれば、afraid not to be~「~でないことを恐れる」という用法は使わず、全てnot afraid to be~という用法を用いるということになるのでしょうか
それならば「afraid not to be」という用法はないからnot A,Bという構造だということが分かる というだけで納得できますが、後のカンマやbutを見るまでは解釈が確定しないということになると、はっきりとした理解が必要になると思いましたので質問しました

現在高校3年生で、来年受験を控えている者です

Teachers can end up afraid not to be in control of the answer,afraid of losing their authority over the class
教師は、ついには答えを把握していないことではなく、教室における自分の権威を失うことを恐れるようになる可能性がある

ここでのafraidの用法なのですが、これは not A,Bという構造ですよね?
訳をみればそう分かったのですが、訳を見る前はnot to be in control of the answerをafraid+lose their authority over the classをafraidだと解釈...続きを読む

Aベストアンサー

>という訳が早稲田の赤本に書いてあったのですが、それは誤りということを言いたいのでしょうか

その赤本とかの訳はおかしいと思いましたので私の訳を書いてみました。
出来れば全文を掲載して下さいませ。
「http://books.google.co.jp/books?id=ca0ncPqf8oEC&pg=PA150&lpg=PA150&dq=%22Teachers+can+end+up+afraid%22&source=bl&ots=cB3idi9xfq&sig=Pg3khRk2GCQO41jZaP_ikPO0auc&hl=ja&sa=X&ei=HQ2KUKXYAYbNmAXuyYB4&redir_esc=y#v=onepage&q=%22Teachers%20can%20end%20up%20afraid%22&f=false」に当該文がありましたので私はそれを参照しましたが、、、。

>Teachers can end up afraid not to be in control of the answer

これを書き換えると
「Teachers can end up afraid that they (should) not be in control of the answer」
となりますが、いいですか。
「that they (should) not be 」は所謂「仮定法現在」です。
意味は、「教師達は自分たちが問題の答えを掌握していないのではないかと心配する羽目になることだろう」となります。

>「,afraid of losing their authority over the class」

これは分詞構文として解釈できますので次のように書き換えられます。
「because they are afraid of losing their authority over the clss」(教師達は生徒たちに対する自分達の権限が無くなるのを恐れているので)

以上をまとめると
「教師達は、生徒に対する権限を失うのを恐れるあまり、答えを掌握していないのではないかという不安に陥ることがある。」という訳になるかと思います。

以上、参考になれば幸いです。

>という訳が早稲田の赤本に書いてあったのですが、それは誤りということを言いたいのでしょうか

その赤本とかの訳はおかしいと思いましたので私の訳を書いてみました。
出来れば全文を掲載して下さいませ。
「http://books.google.co.jp/books?id=ca0ncPqf8oEC&pg=PA150&lpg=PA150&dq=%22Teachers+can+end+up+afraid%22&source=bl&ots=cB3idi9xfq&sig=Pg3khRk2GCQO41jZaP_ikPO0auc&hl=ja&sa=X&ei=HQ2KUKXYAYbNmAXuyYB4&redir_esc=y#v=onepage&q=%22Teachers%20can%20end%20up%20afraid%22&f=false」に当該文があ...続きを読む

Qプログラムの中の public $name = "姓名"; public $age = 20;

以下のプログラムの中に
public $name = "姓名";
public $age = 20;
 があります。なくても表示自体に影響はないのですが、何の目的であるのでしょうか!?
以下問題のプログラムです。 よろしくお願いいたします
--------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>P251 Sample8-2 複数のオプションを作成する</title>
</head>
<body>

<?php
#$は変数の宣言
$pr1 = new Person;
$pr1->name = "鈴木";
$pr1->age = 56;

$pr2 = new Person;
$pr2->name = "佐藤";
$pr2->age = 38;

?>
<table border="2">
<tr bgcolor="#AAAAAA">
<th>名前</th>
<th>年齢</th>
</tr>

<?php

print "<tr><td>";#特に<tr>がなくてもOK
print $pr1->getnam();
print "</td><td>";#特に</td>がなくてもOKでした。
print $pr1->getage();
print "</td></tr>";#特になくても表の2行目表自体は影響はなかった。

print "<tr><td>";
print $pr2->getnam();
print "</td><td>";
print $pr2->getage();
print "</td></tr>";

?>

</table>
<?php

class Person

{
public $name = "姓名";
public $age = 20;

function getnam(){return $this->name;}
function getage(){return$this->age;}
}

?>

</body>
</html>

以下のプログラムの中に
public $name = "姓名";
public $age = 20;
 があります。なくても表示自体に影響はないのですが、何の目的であるのでしょうか!?
以下問題のプログラムです。 よろしくお願いいたします
--------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>P251 Sample8-2 複数のオプションを作成する</title>
</head>
<body>

<?php
#$は変数の宣言
$pr1 = new Person;
$pr1->name = "鈴木";
$pr1->age = 56;

...続きを読む

Aベストアンサー

変数の置き場を、メモリー上に確保するためです。
前者は文字として、後者は数値として。


人気Q&Aランキング