トップページ⇒php
1001コメント375KB

【PHP】くだらねぇ質問はここに書き込みやがれpart7

■ このスレッドは過去ログ倉庫に格納されています
00019662005/07/12(火) 01:47:09ID:qOoYFCn7
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/

立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
0337nobodyさん2005/07/21(木) 06:32:47ID:???
>>334
参照されなくなったとき
0338nobodyさん2005/07/21(木) 08:22:30ID:???
参照されなくなったとき〜
0339nobodyさん2005/07/21(木) 09:45:00ID:???
>>331
キャッシュの有効期限だ。
つまり、今現在の日付より前に設定すれば、
アクセスしてきたブラウザはキャッシュの有効期限とみなして
新しくページを読み込むという理論。

だから今より古い時間ならいつでもいいけど、
時間が止まってるパソコンのことも考えて(?)
10年くらい前にしておけば問題無い。
0340nobodyさん2005/07/21(木) 09:52:36ID:???
>>339
ありがとうございました
0341nobodyさん2005/07/21(木) 11:40:24ID:???
>>340
有効期限のことって解説に載ってなかったの?
俺はてっきり「1994年12月1日16時ちょうど」って時間に特別な意味があるのか聞いてるのと思ってた。
03422382005/07/21(木) 12:34:04ID:1d7jG9nE
>>291、>>298
第一弾で作ったシステムは、DBの重要度・依存度はそんなに高くない
ASP(顧客ごとのオリジナルシステムじゃないですよ)なので。
項目数も更新頻度も少ないから一つのテーブルでまとめちゃっても
特に支障なかったんですよ。

でも今作ってるのはDBに入れるべき項目数もレコード数も多くなるので、
きちんとした設計にしようと思って質問しました。

で、もう半年くらい営業してるんで、顧客が数十社というのはむしろ少なすぎです。
開発と営業を一人でこなさなきゃならないのでどうしても時間が足りないんです。
だからそろそろ営業マンと技術者を一人ずつ雇います。

>>296
いちおう第三正規化まで(無意識的に)やってました。
正規化という概念があるのは後付けで知ったんですが。
0343nobodyさん2005/07/21(木) 13:30:41ID:jGRVDiGI
うちにインストールしたApacheで mb_strpos 関数が使えません。
PHP.ini のどこを変更すればいいんですか?
0344nobodyさん2005/07/21(木) 13:45:42ID:???
最近の流行りか?
プロフェッショナリズムの欠如したプロフェッショナル(自己矛盾だな…)
0345nobodyさん2005/07/21(木) 14:34:01ID:pW+lONe3
すいません。PHP3とqmailで出来ているシステムに
手を加えたのですが、これで良いのでしょうか。
qmailでメールのエイリアスを追加したのですが、
/var/qmail/alias/.qmail〜 というファイルに
&〜
というメールアドレスを追加したのですが、qmail
を再起動しなくてもメールのエイリアスの追加は
完了したのでしょうか。
qmailの再起動も知らない初心者なので、これだけ
で良いのかと心配しています。どなかか教えて下さ
ると非常に助かります。お願いいたします。
0346nobodyさん2005/07/21(木) 15:00:50ID:???
PHPとMySQLで入門本を見ながらいろいろ試してるんですが、
mysql_close()とmysq_free_result()は必要なのでしょうか?
入門本では特に「切断する」「開放する」以上の説明はないのですが、
PHPのマニュアルには
「mysql_closeは通常必要ない」「結果保持用メモリは自動的に開放される」
とあります。

プログラミング的には書くのがお行儀がいい、ということなのでしょうか?
それともやはり「どっちでもいい」のでしょうか?
0347nobodyさん2005/07/21(木) 15:04:34ID:???
>>345
PHPというよりqmailの質問だから↓の方がいいかも

qmailインストール @Linux板
http://pc8.2ch.net/test/read.cgi/linux/1004341147/
qmailいろいろ(7) @UNIX板
http://pc8.2ch.net/test/read.cgi/unix/1114157851/
0348nobodyさん2005/07/21(木) 15:07:32ID:???
>>345
再起動は不要。
エイリアス追加後、再起動せずにエイリアス宛にメールを
送信してみれば聞くまでもないことだと思うんだけど。
てか、そもそもスレ違い。
0349nobodyさん2005/07/21(木) 15:24:55ID:???
<form method='POST' action='hoge.php'>
<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitして
'hoge.php'で$cnt=count($_POST['hoge'])ってしたら
$cntは3になると期待したんですが1になっちまうんです
3にするにはどうすればよいんしょうか?
0350nobodyさん2005/07/21(木) 15:27:23ID:pW+lONe3
>347
>348

345です。ありがとうございます。再起動せずに
エイリアス宛にメールを送信して見たら、出来ま
した。そのようなことも思いつかないなんてどう
かしてますね。(笑)
また、スレ違いでしたので、今後はqmailスレで
聞くようにします。
いずれししても、ありがとうございました!!
0351nobodyさん2005/07/21(木) 15:35:11ID:uSqim16b
プログラムの処理時間を計算する為に

$start=microtime();
//処理
$end=microtime();
echo $end-$start;
ってな感じでmicrotimeの計算をした時に近い数字同士だと
指数になったり結果がマイナスになったりするんですがなぜなんでしょうか?
0352nobodyさん2005/07/21(木) 15:45:03ID:???
>>346
一般的なプログラミングの作法としては、ちゃんとプログラム中で
閉じたり開放するのが正しい(と思ってるので、自分はしてる)。
但し、PHPの仕様としてスクリプト終了時にmysql_close()とmysql_free_result()
相当の動作が自動的に行われると明記されているので、"PHPプログラミング"の
作法としてはスクリプト中で記述しないというのは正しい。
またプログラム処理の結果を吐き出してから後始末を行うので、
結果を得られるタイミングも早く、すなわち処理が速く終わる。

もっともmysql_closeはMySQLコネクションというリソースを、
mysql_free_resultはMySQLからの結果を保持する記憶域を開放するためのものであるから、
スクリプトの動作時間が長く、それらのリソースを無駄に保持する負荷が
比較的大きいのであれば、適宜開放してやるのが良い。
0353nobodyさん2005/07/21(木) 15:51:03ID:???
>>346
俺の考えだけど、俺の場合はソースの頭でオープンさせて最後に開放させてる。

と言うのも、その都度開放するとサーバに負担がかかると思ったから。
何度も開けたり閉じたりするより、最初に開けちゃって最後に閉じた方がよいかと思って。
0354nobodyさん2005/07/21(木) 15:51:51ID:???
>>349
1変数1個だ。
0355nobodyさん2005/07/21(木) 16:00:24ID:???
>>349です。
事象がわかりましたが、
対策が解りませんのでどなたか教えてください。

<form method='POST' action='hoge.php'>
<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitしたのに配列で受け取れないのは
<input type=image>で送信されたものの場合で試しに
<input type=submit>にしてみたら配列がやってきました。
イメージを送信ボタンとして配列をPOSTしたいのですが
javascriptを使わずに出来ますでしょうか?
0356nobodyさん2005/07/21(木) 16:00:52ID:???
>351
microtime() で何が返ってきてるか見てみなよ。
0357nobodyさん2005/07/21(木) 16:06:05ID:???
誰か>>355を翻訳してくれんか?
0358nobodyさん2005/07/21(木) 16:07:04ID:???
>>355
<input type=submit style="background-image:url('イメージ')">

じゃダメ?やってないから分からんけど。
0359nobodyさん2005/07/21(木) 16:15:01ID:???
>>358 だめでした・・・
>>357 http://honyaku.yahoo.co.jp/transtext
0360nobodyさん2005/07/21(木) 16:27:43ID:???
>>355
name="hoge[]"
0361nobodyさん2005/07/21(木) 18:26:15ID:???
>>359
<button type="submit"><IMG></button>
0362nobodyさん2005/07/21(木) 19:25:40ID:NWEHg4fz
フォームを作成しそこに書き込むと掲示板に投稿され
さらに内容が私のメールに届くようにしてあるスクリプトを作成したのですが
これに加えて
自分で作成したメールアカウントにメールを送信したら
そのメール内容が掲示板に投稿されるようには出来ますでしょうか?
0363nobodyさん2005/07/21(木) 19:44:29ID:???
メールを受信した瞬間にログを取り出すのではなく、掲示板を表示するときに適宜メールの内容を取り寄せる形ならimap系でできるかも。
0364nobodyさん2005/07/21(木) 20:57:07ID:???
>>362
SMTPサーバーを操作できるのならエイリアスファイルから登録用スクリプトを呼び出せばいい。
sendmailならこんな感じで呼び出すけど、SMTPサーバーによって設定ファイル、設定内容は
異なるので自分で調べてくだされ。
myaccount: "| /path/to/php 登録用スクリプト名"

これで[email protected]にメールが届くと登録用スクリプトが呼び出される。
スクリプトでは標準入力からメールデータを取り出して掲示板に登録する。
もちろんこのスクリプトはオマイさんが書くんだよ。
SMTPサーバーが触れないのならPOPやIMAPを使うしかないかも。
0365nobodyさん2005/07/21(木) 21:06:26ID:???
あともう一つ、cronを使って定期的にポーリングする方法もあるね。
大体この3つくらいが定番かと。
0366nobodyさん2005/07/21(木) 21:09:11ID:???
smtp鯖をしらべるには?
rh9 php4.3.11を使用しています。

pear Net_SMTPを使用し
[email protected]さんのメールアドレスが実在するかチェックする
スクリプトを作成しています。

Net_SMTPコンストラクタ作成時に 接続先サーバを指定するのですが、
[email protected](abc.co.jp)のSMTP鯖を調べる方法は
ありますでしょうか。
0367nobodyさん2005/07/21(木) 21:21:09ID:???
>>366
getmxrr()
んでも、MXが見つからん場合はAとかに送るんじゃなかったっけ?その辺りは実装しなきゃいけないかもね。
0368nobodyさん2005/07/21(木) 21:27:16ID:hk8J7OA3
質問です。

<?php
$a = @$_POST["answer"]
if($a="ほげほげ"){
echo "正解";
}
else{
echo "不正解";
}
?>
上記のif文で、$aが"ほげほげ"を含む場合には正解を表示させるには
どのように記述したらいいのでしょうか?
$aが"ほげほげです"でも"ほげほげかな?"でも正解にしたいのです。
よろしくお願いします。
0369nobodyさん2005/07/21(木) 21:32:24ID:???
>>368
http://jp2.php.net/manual/ja/function.mb-strpos.php
0370nobodyさん2005/07/21(木) 21:54:25ID:hk8J7OA3
>>369さん
有難う御座います。
リンク先をみても3%くらいしか理解できませんでした。

if(mb_strpos($a,"ほげほげ"){
echo "正解";
}
false{
echo "不正解";
}

こんな感じでしょうか?なんか足りない気がします。
0371nobodyさん2005/07/21(木) 21:58:50ID:???
>>368mbstring入ってる?
0372nobodyさん2005/07/21(木) 22:08:34ID:???
preg_match使えば?
0373nobodyさん2005/07/21(木) 22:38:23ID:???
PHPマニュアルのmb_strposを読んで3%しか理解できない人が
正規表現を理解できるとは思えないけど(バカにしているんではないよ)。
>なんか足りない気がします
ってどういう意味だろう。実行したけどエラーがでるのかな。
エラーがでるのならエラーメッセージぐらいは張って欲しいけど。
とりあえず)が一個足りないけどコピペミスなの?
if(mb_strpos($a,"ほげほげ"){
↓
if(mb_strpos($a,"ほげほげ")){

このままmb_strposが使えるまで頑張るか正規表現を勉強するかは
>>370次第。嫌がらせではないからキレないでね。
0374nobodyさん2005/07/21(木) 22:56:27ID:???
3%くらいしか理解できませんでしたって理解する気もないだろ
0375nobodyさん2005/07/21(木) 23:07:04ID:???
echo$anser=mb_ereg("判らない事",$a)?"取り合えず調べる":"くだ質に丸投げ";
0376nobodyさん2005/07/21(木) 23:10:38ID:???
mb_strpos使えっていうからやったのに何で叩かれるんだよー・゚・(ノД`)・゚・ ウワーン
ってのが聞こえてきそうだ。
var_dump(mb_strpos($a,"ほげほげ"); とかして、どんな値が返ってくるのか実感して欲しいところだな。
誰も突っ込んでないけど、 if($a="ほげほげ") ってのもかなりイタイ
0377nobodyさん2005/07/21(木) 23:44:29ID:OPf2mV1L
PHPを利用したプログラムを2つ教えてください。
�@九九表
�A2次方程式の解 ax2+bx+c=0
0378nobodyさん2005/07/22(金) 00:09:21ID:???
くだらない質問だと思うので、こっちにレスするかな。。
>>377
どこまでやったのか書いてみ。
2.の方は学年と性別、妹の有無の情報が無いと、出題者の意図が分からん。
0379nobodyさん2005/07/22(金) 00:17:20ID:1VklDg1R
377です。まったく手をつけられていません。 九九表のプログラムをすべて書いていただけるとありがたいですm(__)m
0380nobodyさん2005/07/22(金) 00:21:20ID:???
PHPでサイト内検索をしたいのですが、具体的にどうやって作っていけば良いのか分かりません。
せめて過程だけでも教えて下さい。
0381nobodyさん2005/07/22(金) 00:45:13ID:???
>>379
【php】part29【php】の方にレスついてますよ。
0382nobodyさん2005/07/22(金) 01:29:04ID:???
>>370
if(mb_strpos($a,"ほげほげ") === FALSE){
echo "不正解";
} else {
echo "正解";
}

文字エンコーディングの設定必要あるかもだけど。
0383nobodyさん2005/07/22(金) 02:49:06ID:???
isleのレン鯖契約したらmb_*もmb_reg*も入ってなかった。
アリエナスww
上記のライブラリを追加したらリコンパイル必要ですか?
apache再起動で済みますか?
あと、php-usersのMLをどなたかのサイトでアーカイブにしてnamazuに喰わせてあったのですが
うかつにもブックマークし忘れました、どなたかurlわかりますか?
03843832005/07/22(金) 03:01:06ID:???
>>383
すいません、後半部分は自己解凍しました。

http://www.php.gr.jp/php/novice.php3
このスレのテンプレにも追加したいくらい便利っすね。
0385nobodyさん2005/07/22(金) 06:59:06ID:7S1nHf8D
pear::Authでおおはまりしています。
具体的には
CREATE TABLE myAuth (
myUserColumn VARCHAR(50) NOT NULL
, myPasswordColumn VARCHAR(32) NOT NULL
);
ってテーブルを作って、
ttp://dozo.matrix.jp/pear/index.php?PEAR%2FAuth
ここいらを参考に(というかそのまま)
認証をかけてみたんですが、常に認証失敗になってしまいます。

Pear::Authのインスタンスをprint_rしてみたんですが
どこで失敗しているのかがわからず(ちなみにDB接続は成功しています)
解決の糸口がつかめません。

試しにlast_queryをそのままDBに入れると、ちゃんと帰ってくるんで
一体どこでつまづいているのかサッパリです。
同じような現象になった方、解決方法ありましたらよろしくお願いします。
0386nobodyさん2005/07/22(金) 07:31:03ID:???
includeするファイルの拡張子ってどうやって決めるんでしょうか?
基本的にhtmlコードや普通のテキストを呼び出したりするときは.incで統一してるんですが、
phpコードとかだったら.phpにするべきなのかな?
0387nobodyさん2005/07/22(金) 08:13:08ID:???
>>367さん。ありがとう。

pear Net_DNSを使用しました。
0388nobodyさん2005/07/22(金) 08:19:11ID:???
>>386
特に決まりはないから好きにしたらいい
俺はphpコードはphpにしてる。他の拡張子だとソースの内容が丸見えになるので
後はhtmlだったりtxtだったり
config.inc.phpなんてやってるのもある
03893682005/07/22(金) 12:42:26ID:???
>>382さん
有難う御座います。うまくいきました〜
0390nobodyさん2005/07/22(金) 12:43:09ID:???
インクルードファイルも.phpにしておかないとドキュメントルート内だとURL直叩きでソース見放題になるぜ
ドキュメントルート以下にそんなファイル置く奴が悪いんだが。

.htaccessとかで.incを.php扱いにすることも出来るがそんな手間を考えるなら拡張子を統一するのがベスト。
0391nobodyさん2005/07/22(金) 14:09:45ID:???
>>389
結局、答えを全部教えてもらう以外、自分では何もやらない奴だったんだな。
そんなの楽しいのか。。。
0392nobodyさん2005/07/22(金) 16:26:40ID:s5umLjZL
すみませぬが、質問です。

PHPをWindowsで使う際、execを使って外部のexeやバッチファイルを
バックグラウンドで動かすことは無理なのでしょうか?
時間のかかる処理をexeやバッチファイルで実行しているのですが、
exeなどをファイルにリダイレクトしても、結局バックグラウンドでは
動作せず、ブラウザが読み込み中のまま待たされることになってしまいます...。
処理が終わったら戻ってくるんですが。

Linuxだとリダイレクトと「&」を使って簡単にできるのに...。

PHP 4.3.11+IIS(Apacheでも同じ)です。
ぜひご教示を!
0393nobodyさん2005/07/22(金) 16:29:55ID:mNPTggfm
XMLパースについて質問ですが
SimpleXMLは名前の通り使いやすいと思うのですが
SimpleXMLよりも使い勝手がよいパーサというものは
あるでしょうか?
0394nobodyさん2005/07/22(金) 16:34:59ID:mNPTggfm
PHPで、C++やJavaのように、
変数を使う前に宣言してから利用可能に

するということはかのうでしょうか?
クラス内のフィールド(メンバ変数)とは別に。

PHPは、変数名などのスペルミスをすると
どこにバグがあるのか気づかずに
苦労することがあります。デバッガにも気づいて
もらえません。
それをC++やJavaのコンパイラように、
あらかじめ変数を宣言してから
利用できるようにすればどこにまちがい
があるのかかなりわかりやすくなり、
スペルミスにもすぐに気づきやすいのですが。

これをC++やJavaのように楽にする方法はないでしょうか?
C++やJavaを使えと言われても仕事上、そうはいかないものでして.。
0395nobodyさん2005/07/22(金) 17:06:33ID:???
>394
error_reporting (E_ALL);
これで未定義の変数に警告を出してくれる。
0396nobodyさん2005/07/22(金) 18:57:44ID:???
配布したのですが、改造されたくないのです。
PHPは、コンパイルできませんか?
0397nobodyさん2005/07/22(金) 19:04:08ID:???
>>396
つ[どっかの会社が出してる(忘れた)エンコーダー]
0398nobodyさん2005/07/22(金) 19:06:37ID:???
>>396

つ http://www.google.co.jp/search?hl=ja&q=php+コンパイル&btnG=Google+検索&lr=
0399nobodyさん2005/07/22(金) 19:09:20ID:???
ありがとうございます。
ionCube PHP Encoderですか?
PHPスクリプトをコンパイルした場合
こういうのを、サーバーに入れないとだめなんですか?
0400nobodyさん2005/07/22(金) 19:16:57ID:???
>>396
そういった用途の有償・無償のプロダクトがある。
ソース配布前提ライセンスのライブラリ等を利用するときは留意せよ。
0401nobodyさん2005/07/22(金) 19:19:17ID:???
ありがとうございます。
それで、そういうのを使って、
コンパイル後のファイルを配布を受けたものは、
普通にサーバーの入ってるパソコンに
置くと、ネットに乗せられるんでしょうか?
お願いします。
0402nobodyさん2005/07/22(金) 19:31:40ID:???
>>401
書いてる日本語が変。

ネットに乗せられる
→(解釈)アップロードしてWebサーバのコンテンツ配下に置ける(ネットに乗せられる)か
→Yes. 単なるバイナリーファイルだから。
0403nobodyさん2005/07/22(金) 20:17:50ID:???
すみません、
IEなんかで見られるんですか?という意味です。
0404nobodyさん2005/07/22(金) 21:13:13ID:???
>>401
まずお前は日本語と一般教養の勉強をしたほうがいい。
コミュニケーションできないと開発も出来ない(たとえ一人で開発してるとしても)。
0405nobodyさん2005/07/22(金) 21:26:24ID:???
ははは、そんな安月給のお仕事につくつもりは無いですよw
0406nobodyさん2005/07/22(金) 21:39:15ID:???
エンコーダーは高いよ 金が・・・
0407nobodyさん2005/07/22(金) 21:56:40ID:???
>>403
「見る(見られる)」ってのも、これまた抽象的な表現だな。

可能。特にWebサーバでそのファイルに
アクセス出来ないようにしていなければだけど。
0408nobodyさん2005/07/22(金) 22:03:28ID:???
オイラのエスパー脳を発動してみたところ、
・配布した物の中身を見られたくない
・配布した物を実行する鯖(実行環境)に手を加える必要が無い
そんな便利なものがあるのだろうか?って質問をしたいんだろうね。
というか、そういう質問になるはずなのにパスコンとかIEとか訳ワカンネ
0409nobodyさん2005/07/22(金) 23:24:50ID:???
>>405
安心しろ。
お前の言語能力なら、コンビニのバイトでさえ採用されないから。
0410nobodyさん2005/07/22(金) 23:51:35ID:???
高給なお仕事にお就きになられる>>405に、我ら貧民が答える義務はあるまいて。
ほっておけ。
それにしても最近のここは惨いな。夏休みだからか。
0411nobodyさん2005/07/23(土) 00:08:59ID:???
ここはVIPじゃないんだからみんなそんなに全力で釣られなくたって…。
0412nobodyさん2005/07/23(土) 00:17:58ID:???
流れをぶった切って質問させてください。

ある変数がNULLかどうか、0かどうか、空かどうかを皆さんどう判定してますか?
いま、ある配列に特定のキーがあるかどうかを
$hoge = array(10,20,30);
$val = 10;
$key = array_search($val,$hoge);
このようなスクリプトで$valが$hogeに見つからなかった場合の処理をしようと
if ($key == NULL) print "ぬるぽ";
と記述したところ、この場合、$hoge[0]に10があるわけですが、
$keyに「0」が入ってしまい、$key == NULLが真となってしまいました。

仕方ないので(strlen($key)==0)としているのですが、他にもっと直接的な判別方法があるのでしょうか?
($key===NULL)だと$valが見つからない場合でも常に偽になってしまうようです。

よろしくお願いします。
0413nobodyさん2005/07/23(土) 00:25:16ID:???
>>412
いいよ。糞みたいな奴のスレはぶった切っても
array_searchは見つからなかったときはNULLではなくFALSEを返すので
if ($key === FALSE) print "ぬるぽ";
とすればいい。
できればPHPのリファレンスマニュアルを熟読して欲しいな。
0414nobodyさん2005/07/23(土) 00:26:45ID:???
>>412

とりあえず、nullかどうかを判定するなら、is_null()を使うし、
関数の戻り値でfalseが返ってくる可能性があるなら
if($result === false)と型で判定するのが普通。

array_searchの戻り値がnullかどうかで判定しようとしてるけど、
PHP4.2.0以前のバージョンを使っているの?
ttp://jp.php.net/manual/ja/function.array-search.php

最近のバージョンならfalseが返ってくるから、

$key = array_search($val,$hoge);
if ($key === false) print "ぬるぽ";
とする必要がある。

04154122005/07/23(土) 00:29:24ID:???
>>413
レスありがとうございます。
もちろんマニュアルは読んでNULLを返すって・・・アレ?
「注意:・・・NULLを返します」のところと勘違いしてたorz。
スレ汚し失礼しました。

ところでここの「警告」の記述にある
「・・・0や""といった値を返す可能性があります。」
というのは、0はともかく""ってどういう状況なのでしょうか?
連想配列でキーを空にできるということでしょうか?
0416nobodyさん2005/07/23(土) 00:33:34ID:???
>>415
空文字が入っている と言うこと。
0417nobodyさん2005/07/23(土) 00:34:47ID:???
>>415
以下だったら理解できる?
$hoge = array('', '10', '20', '30');
$val = '';
$key = array_search($val,$hoge);
04184122005/07/23(土) 00:37:22ID:???
>>414,416
どうもありがとうございます。
ただの勘違いでした。
キーに空文字という状況がなかなか想像できないというか、
混乱しそうであまりやりたくない状況みたいですね。
0419nobodyさん2005/07/23(土) 00:38:03ID:???
>>415

PHPは型はないとか言われてるけど、実際はあるわけですよ。
で、falseとして評価される0や""を返しますって言ってるわけね。
どういう状況で0や""を返すのかは分からんが、
これらの値もfalseと評価されると書いてある。
でも、
「この関数の返り値を調べるには ===演算子を使用してください。」
と書かれてるので、ちゃんと === falseで比較すればいい。

論理値のマニュアルも参照のこと。
ttp://jp.php.net/manual/ja/language.types.boolean.php
04204122005/07/23(土) 00:38:42ID:???
連続カキコスミマセン。

それって0が帰ってきませんか?>>417
0の実例を挙げていただいたのかな?
04214122005/07/23(土) 00:58:38ID:???
もうちょっと型を意識していろいろ試してみることにします。
どうもありがとうございました。>>419
0422nobodyさん2005/07/23(土) 01:17:21ID:???
なんかMySQLから抽出した文字列を表示させたら変なところに「\」が出てくる・・・。
ぐぐってみたらShiftJISのせいか・・・。
magic quotes gpcをoffにしたらとりあえずおさまったけど、
こんどは必要なところにaddslashesとかやらなきゃいけないのか・・・。

今まだ勉強中なのですが、早いとこEUCなどに切り替えるべきなのでしょうか?
今まで作ったソースとかMySQLのデータはまとめて変換できるのだろうか??
0423nobodyさん2005/07/23(土) 01:24:11ID:???
内部エンコーディングはEUCにして、出力のときにSJISこれ最強
0424nobodyさん2005/07/23(土) 01:44:11ID:???
>>423
俺は、ソースはもちろんEUCだが、出力もPC向けの場合はEUCのまま。
だって、特に支障ないじゃん?

携帯向けの場合だけ、SJISに変換して出力してる。
まあ携帯でも最近の機種はEUCでも問題なく表示されるけどね。
0425nobodyさん2005/07/23(土) 01:59:55ID:???
Win2000+IIS5+php4.3でのinclude()に関する質問なのですが
index.phpのソースの頭で
-----------------------
<?
$path="c:\php\includes";
include "${path}\hoge.inc";
〜
?>
としているのですがこのエラーがでます。↓
main(c:\php\includes\hoge_init.inc):
failed to open stream: Permission denied in
C:\Inetpub\vhosts\webautomatic.info\httpdocs\index.php on line 2

ぐぐった所winにはパーミッションの概念がない、
という記載があったのですが実際にPermission deniedとなっています。
C:\Inetpub\vhosts\の他のドメインからは同じ
c:\php\includes\hoge_init.incがincludeできるのですが…。
winのパーミッションの変更方法、またはこのエラーから予想できる別の原因ありましたら教えて下さい。
0426nobodyさん2005/07/23(土) 02:00:54ID:???
>>412 をやりたい場合、array_search() じゃなく in_array() の方が
いいんじゃないかと思った。
0427nobodyさん2005/07/23(土) 09:23:53ID:???
>>423
Windowsでもパーミッションの概念はあるんだけど。
エクスプローラからc:\php\includesのプロパティ→セキュリティを選択して
ユーザー "IUSR_コンピュータ名" に読み取り許可を追加してみれば?
あと
$path="c:\php\includes";
include "${path}\hoge.inc";
は
$path="c:\\php\\includes";
include "${path}\\hoge.inc";
でないとダメだと思う。
04284222005/07/23(土) 09:24:11ID:???
ううう。なんか内部をEUCで出力をShiftJISにすると、その都度変換してやらなきゃいけないのか・・・。
超絶マンドクサいので全部EUCでやってみることにしよう。
�dクス。>>423,424
04294272005/07/23(土) 09:24:47ID:???
すまねぇ。レス番ミスった。
>>423は>>425ね。
04304222005/07/23(土) 09:51:27ID:???
ちょっと文字コードで調べてたら混乱気味なので教えてください。
あらゆる場面で文字コードをちゃんと設定しなければいけないわけですが、
・データベースにある生データの文字コード(EUCにしたほうがよさげ?)
・HTMLに出力する文字コード(ShiftJISかな?)
・フォームで受け取る文字コード(PHPにあわせるべき?)
・PHPファイル自体の文字コード(EUCに決まってるでしょ?))
以上4つに分けて意識しておけばよいのでしょうか?
たとえばEUCでHTMLを表示したとして、その中のテキストボックス等のフォームで入力される文字はやはりEUCになるのでしょうか?
それとも見る側のOSによって変わるのでしょうか?(Win&IEならShiftJISとか?)
また、データベースから抽出して表示する際に「機能」とかに「\」が付いてしまうのは、
・データベースからPHPで文字列を抽出した段階?
・PHPからHTMLを出力する段階?
どちらなのでしょうか?(後者だとなんとなく思っているのですが。)
ということは、とりあえずPHPファイルをエディタ等で全てEUCにするだけで解決するものなのか?
でもPHPファイルをEUCにしたら当然echo文の内容もEUCになるからHTMLもあわせてEUCにしないと化けるのか?
うぅ・・・わからん・・・。
0431nobodyさん2005/07/23(土) 09:59:49ID:???
14枚の画像を、フォームで入力した数の分だけ横に並べて
数段になる物を作りたいのですが、2段目以降が1段目と同じ画像から
始ってしまいます。どこに手を加えればよいのでしょうか。ご教授ください。

$data[] = $_POST['t1'];
$data[] = $_POST['t2'];
$data[] = $_POST['t3'];

for($x=0; $x<3; $x++){
$w = 400/$data[$x];
$h = 300/$data[$x];
echo "<table><tr>";
for($a=0; $a<$data[$x]; $a++){
echo "<td><a href='img/$a.gif'>";
echo "<img src='img/$a.gif' width='$w' height='$h'>";
echo "</a></td>";
}
echo "</tr></table>";
}

0432nobodyさん2005/07/23(土) 10:03:20ID:???
>>430
とりあえず細かいことは気にせず、全てを「EUC」「改行はLF」で統一していけ。
そんで、場面に応じて必要があれば、別のエンコードを使っていく。
どの場面で変換の必要があるのか…が分からなければ、EUCのままで問題ない。

おそらく全部EUCにするのが、最も問題が起きにくいだろう。
0433nobodyさん2005/07/23(土) 10:31:45ID:???
>>431
問題を単純化すると、こうなる。
for($x=0; $x<3; $x++){
for($a=0; $a<$data[$x]; $a++){
// ここで、連続する数字を出す。
// 元のスクリプトだと$aなので、xのループの度に当然0に戻る。
}
}
どこまで数字を使ったかというカウンタをつければいいだけじゃないの?
0434422=4302005/07/23(土) 12:30:27ID:???
データベースのデータの文字コードを全部変換するの結構手間取ったんだけど普通どうやってやるものなんでしょう?
alter table tbl_hoge character set eucとかだとデータそのものは変換されないみたいだし。
しかたないからphpMyAdminでEUCに変換してCSV出力→インポートっていう手間なことをやったわけですが。
直接データを変換する方法があるのかな?
0435nobodyさん2005/07/23(土) 12:50:52ID:???
ダンプをnkfに食わせる
0436age2005/07/23(土) 14:26:43ID:???
csvっぽい形式の "a","a","a","a","a", みたいなのを読むために作りました。
何か改善案とかありますか?
ちなみに、「"a"」内に含まれる「"」は「""」みたいな感じでエスケープしています。

<?php
$fp = fopen("log.txt");
while ( !feof($fp) ){
$EndCount = 0;
$i = 1;
fseek($fp, $FilePointt,SEEK_SET);
while ($EndCount < 2){
$FilePointt = ftell($fp);
$tmp[$i] = fread($fp, 1);
if ( feof($fp) ){ break; }
if ( $tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n" ){ continue; }
if ( $tmp[$i] == "\"" ){
if($EndCount == 0){ $EndCount++; $i = 1; continue; }
$i = $i + 1;
$tmp[$i] = fread($fp, 1);
while ( ($tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n") ){$tmp[$i] = fread($fp, 1); }
if( ($tmp[$i] == "\"") && ($tmp[$i-1] == "\"")){ continue; }
else if ( $tmp[$i] != "\"" ){ $EndCount = $EndCount + 1; }
else{}
}
else{ $i = $i + 1; }
}
for($j = 1; $j < ($i - 1); $j++){ $tmp[0] = $tmp[0] . $tmp[$j]; }
$FilePointt++;
echo $tmp[0];
}
?>
■ このスレッドは過去ログ倉庫に格納されています