【PHP】質問スレッドpart21【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/27 18:00ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0175nobodyさん
04/08/30 11:43ID:???echo "\"$neta\"".'\'$neta\'';
0177nobodyさん
04/08/30 15:22ID:6Aumzc+Nereg("abcd*", $host)はtrueが返るのに、
ereg("abcd*\.abc\.ne\.jp", $host)がマッチしないのはなぜですか?
abc.abc.ne.jp、abcd.abc.ne.jp、abcddd.abc.ne.jp
などにマッチする。やるなら
"abcd.*\.abc\.ne\.jp"
0181軟式PHP
04/08/30 15:52ID:???いいかもしれぬよ。つか台風すげーよ。
018267
04/08/30 16:11ID:???一応原因がわかったので、報告します。
実は元のスクリプトでは、exec の前にカレントディレクトリの変更をするコードが入っていました。
exec が終わった後でカレントディレクトリは元に戻すのですが、その場所を file_exists 判定の
前に書くべきところを、後に書いていました。
こんなかんじ
$cd=getcwd();
chdir($execdir);
exec('make_test');
clearstatcache();
if(file_exists('test.txt')) {
:
:
}
chdir($cd); // ←こいつの場所はここじゃくて exec の直後であるべき
週末にぐーすか寝てからコードを見たらすぐわかりました。
いやはやお恥ずかしい限りです。
"^abcd.*\.abc\.ne\.jp$"にする必要がありますね。
# 関西ですがまだ風が強いだけでそこまで
0184177=180
04/08/30 16:35ID:???前後に何もないことをチェックするんですね。
たびたびありがとうございます〜。
こちらも同じく関西ですが、台風とは思えぬ穏やかさ・・・。
0185カポコン
04/08/30 16:40ID:???シングルとダブルの違いですか〜。。。
結構、面白い質問ですね、
同じ文字列を表現するという部分は一緒ですが・・・
例えば、
<?php
$ANI = array("bear","fox");
$str[0] = "$ANI[0]'s nails are very danger.\n"; //問題なし
$str[1] = 'The $ANI[1]\'s fur is very beautiful.\n'; //問題あり
foreach($str as $val) echo(nl2br($val));
?>
のようにタイポしてみれば、ある程度違いが分かるのではないでしょうか?
他にも違いがありそうなので僕よりエロイ方いたら教えてくださいな。
>>174
よくCってますねぇ・・・(゜д゜::)
0186nobodyさん
04/08/30 16:46ID:???0187カポコン
04/08/30 16:48ID:???ダブルとシングルのクォートの違いは・・・。
エスケープシーケンスの例(↓)
\n 改行; \\ \マーク; \r 復帰; \t タブ; \$ $マーク; \"ダブルクォート
\' (シングルクォート内でシングルクォートを使用したい場合)
0191169
04/08/30 20:00ID:???申し訳ない。base64_encode()追加で簡単に渡せますた。
本当はserialize()使用前後の比較も、HTMLのソースも見てたんだけど
どうも脳みそがグダグダだったようで……(serializeの意味も理解してなかった)
本当はこの配列を、さらに配列にして渡したかったんですが
そっちは簡単にできました。スレ汚しすまんです。
0194nobodyさん
04/08/30 21:47ID:???多重度が低いととってもパフォーマンス悪いんですが、
そんなもんなんですかね?みなさん。
0195nobodyさん
04/08/30 21:59ID:???0196nobodyさん
04/08/30 22:05ID:???楽天市場やヤフーオークションなどによく一覧を見るためにサムネイル画像が使われていますが
それらサムネイル画像には元の画像がありますよね。
元の画像が40kbなのに対しサムネイル画像は4kbとか約10分の1位の容量になっています。
これを単純にHTMLで画像のサイズを小さくしてサムネイルを作ると
40kbのままでサムネイルが出来てしまいます。
画像は同じ画像でもサイズを小さくすると容量まで小さくする関数などがあるのでしょうか?
よろしくご指導お願いいたします。
0197nobodyさん
04/08/30 22:05ID:OUKC12Ijイヤな予感すらしますが、教えてください。
array(3) { [0]=> string(2) "10" [1]=> string(2) "30" }
と言う配列をうまいこと
array(3) { [0]=> string(2) "10" [1]=> string(2) "20" [2]=> string(2) "30" }
にするような関数って無いですよね?
0199nobodyさん
04/08/30 22:14ID:???早速のレスありがとうございます。
>ファイルが2つあるとは考えないのかい?
ということは画像をアップロードする時にサムネイル用の画像も自動で作られるという感じですかね?
0200nobodyさん
04/08/30 22:18ID:???ワラタ
タフだな。
ImageMagic とか GD で調べれ。
面倒か使えるだけの理解力が無ければ >>198 のように、Fireworks や ImageReady といったソフト使って別に用意しる。
0201nobodyさん
04/08/30 22:53ID:???ありがとうございます。
なるほどですね。まさか2枚にしてたとは・・
私はてっきり元画像をどうにかして容量を小さくして見せる方法があるものだと思ってました。
GDは使いやすそうですね
0202200
04/08/30 23:11ID:???いや、もういいや orz
0203nobodyさん
04/08/30 23:26ID:MkaTkZM6if($aaaaa) {
echo "ok";
} else {
echo "out";
}
か、または
if($aaaaa)
{
echo "ok";
}
else
{
echo "out";
}
どっちの書き方してますか?どっちのほうがよいのでしょうか?
0204nobodyさん
04/08/30 23:32ID:???0205nobodyさん
04/08/30 23:33ID:???個人的には
if($aaa) {
echo "ok";
}
else {
echo "out";
}
です。
理由らしい理由も無いですが、if の後ろに何も付けないとさみしい気がするのと、無駄に行が増えるのがいやなのとでこうしてます。
} else { みたいな書き方は、あんまりやりません。
書き方について説得力のある意見があるなら、自分もぜひ伺いたいです。
0206nobodyさん
04/08/30 23:34ID:???} else {
なかったっけ?
俺もこれ嫌いなんだけども
0207nobodyさん
04/08/30 23:36ID:???嫌味ったらしく自分は分かっていることだけを晒して
肝心な部分を教えないタイプ。
俺はこういう奴は無視〜
0210nobodyさん
04/08/30 23:48ID:???http://pear.php.net/manual/ja/standards.php
IDEも参考にしてるだろうから、合わせた方が楽なんだろうなぁ。
0213nobodyさん
04/08/30 23:56ID:???確か C の話だったと思うけど、間違えて下のような書き方をしてはまったので
if($aaa) { という形にに変えたという話をどこかで読んだことがある。
if($aaa);
{
echo "ok";
}
else の書き方は } else { と一行で書くよりは、
}
else { とした方が、diff コマンドで差分を作成する時に読みやすい差分ファイルが
できるという話があったような・・・。
0214nobodyさん
04/08/31 00:16ID:???IMAP関数を使用した方がいいの?
それともソケットでPOP3鯖にアクセスして取得すた方がいいの?
どっちも難しいそうだ…
0215nobodyさん
04/08/31 00:23ID:???PEAR使うと簡単。
0216軟式PHP
04/08/31 00:30ID:???0217nobodyさん
04/08/31 00:34ID:???echo "ok";
} else {
echo "out";
}
これが正解
制御構造では、関数コールと区別するために 制御キーワードと開き括弧の間に空白を 1 つ置くべきです。
0218nobodyさん
04/08/31 00:39ID:???レス有難う。
やりたい事は写メールBBSの様に(そのモノではないです)
メールを読み込んで更新する様なシステムを作りたいのです。
ちょっとまだ勉強中なので良くわかってないのですが。
貴重なお知恵を有難う御座いました。
0220nobodyさん
04/08/31 01:40ID:???同じ物は PFC で見た記憶がある。
俺はそれからスペース置くようにしてる。
でも制御構造はこれ。
if (true)
{
処理
}
結局、始点と終点が分かりやすい方を取った。
0221nobodyさん
04/08/31 02:15ID:???キミに同じく
0223nobodyさん
04/08/31 03:28ID:???20件目ってなりますけど、改行なしのログファイルから、普通にアクセスすると
先頭から100バイト、次をクリックすると101バイト目から200バイトまでって
表示させることはできないでしょうか?
0225nobodyさん
04/08/31 07:21ID:Cvp+faYJあ、気づいてくれました?
配列の1番目と2番目の間に、要素を追加し、元の2番目の要素は後ろにずれて
3番目になって欲しいんです。
0226nobodyさん
04/08/31 07:37ID:???その配列が $a、挿入したい位置が $n、挿入したい値が $v だとすると、
array_splice($a, $n, 0, $v);
はどうよ?
0227nobodyさん
04/08/31 10:18ID:RICHNKvsありがとうございます。勉強させていただきました。
調べたらありました。↓
> array_splice
> offsetおよびlengthで 何も削除しないと指定した場合、
> 配列replacementの 要素はoffsetで指定された位置に挿入されます。
0228nobodyさん
04/08/31 10:33ID:???backtick演算子
って見慣れない演算子が出てきたんですけど、
backtick演算子って、
JUST ONE MORE KISS で悪の華?
0229nobodyさん
04/08/31 11:14ID:j9aJEHZOおでこに「愛」と書いてあります。
あ、これ今井じゃなくて砂漠のガアラだ。
0230nobodyさん
04/08/31 11:24ID:???0232nobodyさん
04/08/31 12:01ID:???move_uploaded_fileでアップされたファイルのmimetypeを調べたいのですが。
その場合環境変数のCONTENT_TYPEを使えばいいのでしょうか?
と言ってもCONTENT_TYPEをどう使えばいいのか分からないのですが・・
詳しい方いませんか?
今はGetImageSizeで画像か画像で無いかを判別してます。
それをもう少し詳しく調べたいのですが。
0233nobodyさん
04/08/31 12:03ID:rI5QNfOvfopenで開こうとすると
http://www.google.co.jp/
ですと普通に開けますが、
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=aaa&num=50
などと引数が付くと
Warning: fopen("http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=aaa&num=50", "r") - Success in 。。。。
とエラーが出てしまいます。
色々調べてみたのですが、わかりません。識者の方、ヒントでも結構ですのでお教えください。
0234nobodyさん
04/08/31 12:05ID:rI5QNfOvPHP のバージョンは 4.2.3 です。
0235nobodyさん
04/08/31 12:25ID:???PHP 4.3.7 です。
$fp=fopen("http://www.google.co.jp/search?hl=ja&ie=Shift_JIS&c2coff=1&q=%82%AE%81%5B%82%AE%82%E9&lr=lang_ja","r");
print fgets($fp);
fclose($fp);
0236nobodyさん
04/08/31 12:34ID:???試してみましたが同様に
Warning: fopen("http://www.google.co.jp/search?hl=ja&ie=Shift_JIS&c2coff=1&q=%82%AE%81%5B%82%AE%82%E9&lr=lang_ja", "r") - Success in 。。。
とエラーが出ます。
PHPの設定なのでしょうか?
allow_url_fopen は '1'です。
GETだと別の命令が必要なのでしょうか??
Googleはuser_agentを設定しないと許可してもらえませんよ。
0241nobodyさん
04/08/31 13:49ID:1XrzGRem本文を mb_convert_encoding でJISにしたら受信時に文字化け、
SJISにしたら文字化けせずにスンナリいったんですが、
こんなことあるんでしょうか?
どこかのホムペで読みましたが、JISよりSJISの方がベターなのでしょうか?
0242nobodyさん
04/08/31 14:04ID:???このヘッダが足りないとか?
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
0243nobodyさん
04/08/31 14:07ID:???ありがとうございます。
>>233
<?php
$url = @file("http://www.google.co.jp/search?num=10&hl=ja&ie=Shift_JIS&q=$key_word&lr=lang_ja");
print_r ($url);
exit;
?>
ではダメ?
0244241
04/08/31 14:17ID:1XrzGRemそれは初耳でした。
で、それを加えて再度JISで試してみましたが、ダメでした。
でも調べたら、やはりSJISよりJISの方がベターっぽいですよね〜
うーん困った・・・
0245241
04/08/31 14:20ID:1XrzGRemmbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output SJIS SJIS
mbstring.internal_encoding EUC-JP EUC-JP
mbstring.language Japanese Japanese
mbstring.substitute_character no value no value
で、スクリプトはEUCでコーディングしていますが、
何か問題ありますでしょうか?
0246nobodyさん
04/08/31 14:29ID:???mb_send_mail でメール送ってるなら、この関数は日本語を JIS に変換して送ってくれるから、
自分でわざわざエンコードしちゃうと文字化けの原因になるかもね。
あと、mb_language の設定はどうなってるんだろう。
0247241
04/08/31 14:35ID:1XrzGRemです。
mb_send_mail は使用していないです。
9割大丈夫なのに1割文字化けしてしまうんです。
実際、SJISでメール送ることって結構問題発生するものでしょうか?
大きい問題が無いのならこちらを利用しようかなと。
0248nobodyさん
04/08/31 14:39ID:???戻り値は false です。
ですが単純に"http://www.google.co.jp/"でのアクセスならtrueです。
>>239
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar)');
を付加してみましたが、同じエラーでした。
>>243
試してみましたが、ブラウザは真っ白で、ソースでは
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
だけです。
やはりソケットの許可とかなんですかね?その辺はあまり詳しくないのでもうちょっと調べてみます。
0249nobodyさん
04/08/31 14:43ID:???世界のサーバに迷惑かけかねないから、決まりには従っておいた方がいいと思うよ。
ところで、エンコードしたサンプルメールをヘッダごとここに貼り付けてみたら、いいアドバイスしてくれる人がいるかもよ。
0252nobodyさん
04/08/31 14:54ID:???>単純に"http://www.google.co.jp/"でのアクセスならtrueです。
これなら、サーバが外部に接続できないとかいった問題は無いよね。
なんだろうね。
PHPのバージョンのせい?
0254nobodyさん
04/08/31 16:14ID:???foreach($fp as $fpv){
echo $fpv."<br>";
}
とか
0256nobodyさん
04/08/31 17:36ID:???> ですが単純に"http://www.google.co.jp/"でのアクセスならtrueです。
なんだ。ネタかよ
0257nobodyさん
04/08/31 18:02ID:???http://ns1.php.gr.jp/pipermail/php-users/2003-November/019273.html
0258nobodyさん
04/08/31 18:02ID:???fopen が成功したときに返すのは true ではないっていう、この際どうでもいい点以外に、なにか有意義な指摘は無いの?
0259nobodyさん
04/08/31 18:09ID:???ググれば出てくる話にダラダラレスしてる奴らも冗談半分なんだろ。
明確にネタだと言ったらすこしは醒めんか。面倒臭い。
0263nobodyさん
04/08/31 20:38ID:???http://www.google.co.jp/search?q=cache:-u7P_8RU9r4J:bugs.php.net/bug.php%3Fid%3D8440+php+success+warning+fopen&hl=ja
しかし、似たようなトピックが結構あるし、この条件でもまだ2万近くヒットしてるから、
ちょっと特定はできんな。ML漁ったらさらに情報増えそうだ。
ちなみに今回はリダイレクト問題じゃなく、4.2.3でクエリ飛ばすとGoogleが403を
返すのをハンドリングできないというだけだと思われ。
# このスレでもちょっと前にもfile_get_con()で206がハンドリングできねえぞどうなってんだっ
# て話があったけど。
知ってる人には当たり前だが、phpのwapperはステータスコードのトリートは
ほとんどやらない仕様なのだ。
はるか昔、内部ステータスのSuccessがエラーで返っちゃうダメ仕様についても
readfileとかstreamの問題で何度か指摘されたことがあったが、これは果てしなく
分かりにくいのでいつのまにか修正されらしい。
解決策はみんな0.1秒で思いつくと思うので省略。
# ときに、レスポンスヘッダー見るくらい常識というのは、今や過去のことですか・・?
0265nobodyさん
04/08/31 21:21ID:???PHP4.2にはUAディレクティブありませんから!!
ちなみにUAは、全く送らないかきちんと偽装する、が正解。
#しかしそうするとぐーぐるのサービス規定に抵触するモヨウ
0267nobodyさん
04/08/31 21:28ID:LThtawzV前の頭に載せたくなるデザインもなかなかだったが、
今回のはマジ欲しい。
0268nobodyさん
04/08/31 21:41ID:???最初に本当に気付いてたなら、その時に言えば感謝されたものを。
0269nobodyさん
04/08/31 21:51ID:???0270nobodyさん
04/08/31 21:56ID:LThtawzV問題のカイケツってこれのことか?
0.1秒でカイケツしたのは>>268だけだろ?
他の皆はマックンに乗り換えようぜ!
古きよきコンピュータって感じで最高じゃん。
おでこの部分を人差し指でつついてフラフラさせたりして遊びたい。
スクリプトならOSXでもバリバリ開発出来るんだぜ。
0271nobodyさん
04/08/31 22:00ID:???外にあふれてきてるやつがいるのか? 巣に帰って呉よ
0272nobodyさん
04/08/31 22:27ID:???<?php
$data = "\"$a."<>".$b."<>".$c."\n";
$fp = fopen("file.log","a");
flock($fp,2);
fputs($fp,"$data");
flock($fp,3);
fclose($fp);
?>
<html>
<body>
完了
</body>
</html>
のように「file.log」に書き込んで
a<>b<>c
d<>e<>f
のように書き込んでいきたいのですが
a<>b<>cd<>e<>f
のように改行がうまくいきません。ちなみに最後の文字(〜<>f)の後には
改行が入ってるのですが。どうしてでしょうか?
0273nobodyさん
04/08/31 23:04ID:MMjs19HPすごく初歩的な返事で悪いんですが釣りですよね!!
■ このスレッドは過去ログ倉庫に格納されています