【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
0153nobodyさん
04/08/29 21:03ID:???文字化けで困っちゃいけないの?
0154nobodyさん
04/08/29 21:16ID:???mb_convert_encodingだけでは文字化けしてしまう場合があります
0155nobodyさん
04/08/29 21:17ID:???0156nobodyさん
04/08/29 21:20ID:xD9nrE3/でもソースをみるとそこの部分は改行されず永遠と右にずらーっと続いています。
ソース上でも改行を加えたりすることはできないのでしょうか?
0159nobodyさん
04/08/29 21:38ID:xD9nrE3/それができないんです。
http://php.s3.to/simple/source.php?nikki.phpの
「$com = str_replace("\r\n", "\r", $com); 」あたりを弄ったんですが
それで編集するとどうもちゃんと更新されません。
0161nobodyさん
04/08/29 22:02ID:xD9nrE3/入力した内容が表示されないんです
0162
04/08/29 22:38ID:ABDLQ/Knあまり経験がなく教えて君なのですが
global変数系をまとめておきたいのですが
<?php
$user = "test";
$password = "2ch";
?>
安易に上記のような感じで記述しようかと思うのですが
開発していく上で問題は起こらないでしょうか?
もし経験者いましたら教えてください。
0163nobodyさん
04/08/29 22:38ID:???0164nobodyさん
04/08/29 22:49ID:fDZT6TXTdefine
0166nobodyさん
04/08/30 00:16ID:LBsDFKrahoge = parts.options[parts.selectedIndex].value;
とかやって、hogeの中に、文字列が入ってるんですが、
この文字列を、phpでつかう
$hoge変数に格納したいんですがどうすればいいでしょうか?
0167nobodyさん
04/08/30 00:20ID:QEqsYWNI私は27歳のOLしてるのぉ〜〜〜っ♪(#⌒〇⌒#)キャハ
うーんとー、私メル友がすっごくすっごく欲しくってー、
探してたら(◎_◎)なんとっ!
>>1さんの素敵なスレッド♪を発見!!!!(^o^)//""" パチパチパチ
てなわけで、ついつい書いちゃったのらー(o^v^o) エヘヘ
メル友に、なってくれるよねっ。(*^-^*)
え?くれないのぉ〜?(;¬_¬)そんなのいやいや〜〜、
なってくれなかったら、( `_)乂(_´ ) 勝負!
☆○(゜ο゜)o ぱ〜んち、☆(゜o(○=(゜ο゜)o バコ〜ン!!
(>_<) いてっ!
(☆o☆)きゃ〜〜(@_@;)やられた〜〜(o_ _)o ドテッ
(+_+) 気絶中。。。
なあんて(#⌒▽⌒#)こんな私っ!σ(^_^)だけど、
お友達になってm(_ _)mくださいませませ♪('-'*)フフ
ということで。(^-^)vじゃあね〜〜〜♪
0168nobodyさん
04/08/30 02:25ID:???なんか他国言語の文字のようだ(´A`)
DBって何使ってるの?そのDBの文字コードは?
そのへんから原因を探ってみてはどうだろう
0169nobodyさん
04/08/30 02:29ID:???見つけたんですが、どうもうまくいかないです。どこが変なんでしょうか?
<?php
$hhh = array("a","b","c");
$hoge = serialize($hhh);
?>
<form action="<?= $PHP_SELF ?>" method="post">
<input type="checkbox" name="box" value="<?= $hoge ?>" />
<input type="submit" value="botan" />
</form>
<?php
if(isset($_POST["box"])) print_r(unserialize($_POST["box"])); //*1
if(isset($_POST["box"])) print_r($_POST["box"]); //*2
?>
*1 何も表示されない。こう表示させたい → Array ( [0] => a [1] => b [2] => c )
*2 出力結果 → a:3:{i:0;s:1: (よく分からんけど、たぶん「Array」の変化したもの)
0170nobodyさん
04/08/30 03:00ID:???デバッグのためにunserializeした後とする前の比較をしてるのに
なんでserializeした後とする前の比較をしないのか不思議でならない
0171nobodyさん
04/08/30 06:45ID:???phpでパースして出力されたHTMLソースを
表示させて眺めると分かるかもよ
<input>タグのあたりとか
つか動作がおかしかった時にHTMLソースを
見るのはデバッグの基本だと思うがどうか?
0172nobodyさん
04/08/30 07:44ID:???0173116
04/08/30 10:39ID:kwBfpaHQもう一つ質問させて下さい"と'の使い分けについてですが
どういう場面でどっちとかあるんでしょうか?
0174nobodyさん
04/08/30 10:59ID:???'は文字型で宣言した変数に文字を代入するのに使います。
実際には文字コードの対応する値が入ります。
"で囲われた文字列は、式としては「メモリの先頭アドレス」を値に持ちます。
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のバージョンのせい?
■ このスレッドは過去ログ倉庫に格納されています