【PHP】下らねぇ質問はここに書き込みやがれ 24
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/07/07(金) 14:54:53ID:KnVubDvEここならお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0037nobodyさん
2006/07/08(土) 00:16:49ID:???セットしたクッキーはどこに保存されるのでしょうか?
timeを設定していなかったらずっと残るわけですよね?
0040nobodyさん
2006/07/08(土) 00:39:22ID:???http://www.makers.ne.jp/
のECサイト、どうせどこかのASPパッケージを弄ったものだと
おもうんだけど、誰か心あたりある香具師いますか?
0041nobodyさん
2006/07/08(土) 00:50:56ID:???書いてるのはこれだけです。これでmb_convert_encodingの行抜くと
普通にコピー出来るんですが
<?php
touch("./dat/utf.txt");
$fp = fopen("./dat/utf.txt", 'w');
$handle = fopen ("jis.txt", "r");
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str);
}
fclose($fp);
fclose($handle);
?>
これでもブラウザに何も表示されないです
$jis = file_get_contents('jis.txt');
$jis = mb_convert_encoding($jis, "UTF-8", "auto");
echo $jis;
0042nobodyさん
2006/07/08(土) 00:51:54ID:???index.phpにunset($str);
frame1.phpに$str="テスト";
これをフォームでframe2.phpに送っています。
frame2でecho $str;
これをリロードさせても、index.phpのunset($str);で変数が消されず、
frame2で$strがそのまま表示されます。
更新すると、index.phpが読み込まれるのではなく、frame1と2が読み込まれるだけなのでしょうか?
0043nobodyさん
2006/07/08(土) 00:52:33ID:fMTjXb+R0045nobodyさん
2006/07/08(土) 01:09:22ID:???それは明らかにおかしい
$buffer = fgets($handle, 4096); // ←$bufferに読み込んでいる
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str); // ←$strを書き込んでいる
mb_convert_encodingの「行を抜いたら」、$strはundefinedになるはず
質問の仕方が悪すぎ。とりあえず>>5
釣りならよそでやってくれ
0047nobodyさん
2006/07/08(土) 01:41:22ID:???0048nobodyさん
2006/07/08(土) 02:24:24ID:???わざわざrequireで呼び出すとやっぱり重たくなりますか?
004927
2006/07/08(土) 03:10:14ID:???結局mbstring自体が入って無い事がわかりました
んでphp_mbstring入れたらあっさり解決しました
いやほんと申し訳なかったです
レスくれた方有り難うございましたm(_ _)m
005043
2006/07/08(土) 03:19:09ID:???0051nobodyさん
2006/07/08(土) 04:20:16ID:???5000行とかいうならともかく50行くらいでは普通気にしない。
500行でもほとんどの場合は気にするほどじゃない。
0053nobodyさん
2006/07/08(土) 07:34:42ID:???0054nobodyさん
2006/07/08(土) 09:20:11ID:???0055nobodyさん
2006/07/08(土) 09:34:09ID:???array_keys で違うんなら具体的に例をあげてくんろ
005654
2006/07/08(土) 09:45:50ID:???$a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えております。
0057nobodyさん
2006/07/08(土) 11:20:23ID:???>$a['a']['b']['c']から例えばarray('a','b','c')という結果を得たいのです。
$a['a']['a']['a']
$a['a']['a']['b']
$a['a']['a']['c']
$a['a']['b']['a']
$a['a']['b']['b']
$a['a']['b']['c']
$a['a']['c']['a']
$a['a']['c']['b']
$a['a']['c']['c']
こんな配列だった場合はどういう風に欲しいの?
>$a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えてお
こんな風に普通にアクセスできるよ
echo $a['a']['b'];
0058nobodyさん
2006/07/08(土) 12:37:11ID:???func($a['a']['b']['c']) で戻り値にarray('a','b','c')を返したいとかいう話?
無理だろ。
0059nobodyさん
2006/07/08(土) 12:55:12ID:???0060nobodyさん
2006/07/08(土) 13:19:32ID:???分かってないと 'a','b','c'のように具体的に書けないから。
一方 $a['a']['b']['c'] = 'αβγ'; のように値が入っていたとして、
'αβγ'という文字列から変数名(あるいは配列名、キー名)を調べることはできない。
>>56の説明にあるような要求がでてくる場面が想像できない
006154
2006/07/08(土) 13:20:35ID:???58さんのおっしゃる事がそうだと想います(^^;。
フォルダでいう所の1つ上のフォルダにアクセスしたい感じですがやはり無理ですか・・・。
$dat[$a][$b][$c]で$aから$cまでの変数が不定である場合の$aと$bを知る方法があれば
知りたかったのです。$datだけ固定なのでやはりここから作って行くしかないですね。
006254
2006/07/08(土) 13:24:07ID:???0064nobodyさん
2006/07/08(土) 13:35:50ID:???そもそもその$dat[$a][$b][$c]にどういう形でアクセスしてるときに
第二階層をアクセスしたいのか、もうちょっと具体的に示せ。
フォルダ云々言ってるけど、$dat[$a][$b][$c]を引数で渡したときってのは
中身を別のまっさらなディスクにコピーした状態になってるから
そもそも上のフォルダとかいうもの自体が無くなってしまってる。
0065nobodyさん
2006/07/08(土) 14:15:03ID:???006654
2006/07/08(土) 14:23:55ID:???どうやって説明しようか迷っていたのですが、その通りです!!。このツリー状になっている配列は
Web上で利用するユーザーが好き勝手に変更できる仕様なので階層も決まっておらず、毎回検索
するのも効率が悪いので何とか効率よくできないものかと・・・。今はキーをインデックス化しており、
そこから割り出しているのですが処理によっては1つ上の親の配列が必要になったりするので
配列変数をLinuxのディレクトリみたいに「cd ..」なんて出来ないかと安易に考えた次第です。
0067nobodyさん
2006/07/08(土) 14:25:42ID:???0068nobodyさん
2006/07/08(土) 14:28:13ID:???それはキーそのものを情報として持って処理するしかないと思う。
ディレクトリだって、自分が親の位置情報を持ってるわけじゃなく、
自身のフルパスとして全階層のキーに該当する情報を持ってるだけだし。
0069nobodyさん
2006/07/08(土) 16:32:23ID:Y8id9cd8$array[1] = 9;
$array[2] = 6;
$array[3] = 10;
asort($array);
print_r($array);
?>
Array ( [2] => 6 [1] => 9 [3] => 10 ) ←出力されます
これを、小さい順に
$a、$b、$cに格納したいのですが、どうすれば良いのでしょうか?
list($a,$b,$c) = asort($array);
としてみたいのですが、ダメでした。
007069
2006/07/08(土) 16:41:47ID:Y8id9cd8ありがとうございます。
しかし、こんな面倒くさい方法じゃなく、
変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
0071nobodyさん
2006/07/08(土) 17:22:50ID:qcW5njj8以下のスクリプトを実行したのですが、
<?php
mb_http_output("UTF-8");
mb_output_handler("UTF-8");
ob_start("mb_output_handler"); ?>
test
<?php ob_end_flash(); ?>
Warning: mb_output_handler() expects exactly 2 parameters, 1 given
Warning: Wrong parameter count for mb_output_handler()
Fatal error: Call to undefined function: ob_end_flash()
といったエラーになってしまいました。
どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。
どうすればUTF-8で出力されるでしょうか?
PHP4.4.0を使用していて、mb周りの設定値は以下になります。
mbstring.detect_order no value
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input pass
mbstring.http_output pass
mbstring.internal_encoding SJIS
mbstring.language neutral
mbstring.substitute_character no value
0072nobodyさん
2006/07/08(土) 17:26:39ID:???007371
2006/07/08(土) 17:42:41ID:???パラメーターがおかしいのは解るのですが、UTF-8以外に指定できるのでしょうか?
そこがわかりません。。
0074nobodyさん
2006/07/08(土) 18:01:53ID:4HW/BEu50075nobodyさん
2006/07/08(土) 18:12:21ID:???0076nobodyさん
2006/07/08(土) 18:17:05ID:???0077nobodyさん
2006/07/08(土) 18:17:56ID:???あるに決まってるだろ
0078nobodyさん
2006/07/08(土) 18:27:45ID:4HW/BEu50079nobodyさん
2006/07/08(土) 19:46:21ID:???Fatal error: Call to undefined function: ob_end_flash()
致命的エラー:ob_end_flash()だぁ? んな関数ねぇよハゲ。
× flash
○ flush
もう一度聞くが、何故エラーメッセージを読まない?
0080nobodyさん
2006/07/08(土) 19:54:12ID:???mb_output_handler("UTF-8");
...
Warning: mb_output_handler() expects exactly 2 parameters, 1 given
Warning: Wrong parameter count for mb_output_handler()
...
どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。
なんのマニュアルを読んだんだろうねー
0083nobodyさん
2006/07/08(土) 23:10:14ID:???どう記述すればいいのでしょうか?よろしくお願いします。
0085nobodyさん
2006/07/08(土) 23:58:31ID:???ニュースサイトのRSSを購読すると、三日前のニュースとかは取得できないので不便なんです。
だったら自分で契約してるサーバにスクリプトを設置して、タイトルとリンクをHTML化して毎日一回保存してしまおうかと
だめでしょうか? cronもつかえるという前提だとどうでしょう
0086nobodyさん
2006/07/09(日) 01:13:29ID:???0087nobodyさん
2006/07/09(日) 01:57:06ID:???といった会員登録サイトを作ろうと思い、調べた結果とりあえず空メールが
あったら返信をするというのはvacationで出来るというところまでは
調べる事は出来たのですが、そこからどの用にメールアドレスだけを取得し
PHPに持っていけばいいのかが分かりません
0089nobodyさん
2006/07/09(日) 02:27:42ID:???vacationなんぞ使わずに、自作の処理スクリプト(PHP)に渡して
そこで処理をする。forwardで渡すのは同様。
空メールなのかとか、そのメールからアドレスをどうやって取るかは
実験してみな。単なる文字列の処理だけだから。
0090nobodyさん
2006/07/09(日) 02:27:51ID:???0091nobodyさん
2006/07/09(日) 02:33:21ID:???再現できるソースきぼんぬ
0093nobodyさん
2006/07/09(日) 03:12:06ID:???PHPをcronなどで一定間隔で動かしてPOPサーバーに接続してメールを取得、
もしくはsendmailのforward設定で受信時にメールを食わせて自動的にPHPを実行させ、
あとはメールの中身を1行ずつ読み込んでってFrom:行からアドレス抜くだけ。
0094nobodyさん
2006/07/09(日) 05:33:03ID:???>しかし、こんな面倒くさい方法じゃなく、
>変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
結局キーは捨てるのに、なんでわざわざasort使ってんの?
マニュアル読んでないよね?
0095nobodyさん
2006/07/09(日) 07:42:20ID:???0096nobodyさん
2006/07/09(日) 12:24:45ID:???readfileだけでしょうか?
外部サイトの、<body>以下だけを出力すると言った方法は可能ですか?
0098nobodyさん
2006/07/09(日) 12:49:41ID:???外部ファイルを手軽に扱うための関数(fopen_wrapperの設定に依存)
readfileやinclude、fopen etc.
細かい制御ができるが、その分よく面倒を見る必要あり
fsockopen
後半は、ファイル全体を取得してから自力で切り出すしかないやね。
PHPには文字列を操作する関数があるので、可能っちゃー可能
0100nobodyさん
2006/07/09(日) 13:04:23ID:vWh3Ts67$ua = 'Vodafone/1.0/V802N/NJ001[test_serial] Browser/UP.Browser/7.0.2.1.307 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0';
if ( ereg ("\[(.+)\]", $ua, $serial) ) {
print $serial[0];
}else{
print "error!";
}
って感じで書いたんだが、[]も代入されてしまう。
\[(.+)\]の()の中だけを代入するにはどうすればいい?
Perlやってたからよくわからねぇ。
0101nobodyさん
2006/07/09(日) 13:54:33ID:???確か$_SERVER['??_JHONE_NO']みたいな配列に送られてくるはずだが…
print_r($_SERVER)すればわかるかも。
0102nobodyさん
2006/07/09(日) 14:03:10ID:???http://jp.php.net/manual/ja/function.ereg.php
をよく読めば間違いが分かる
0103nobodyさん
2006/07/09(日) 14:25:29ID:vWh3Ts67あ、[1]に入るのか。サンクス!
0104nobodyさん
2006/07/09(日) 14:54:36ID:???子プロセスの方で関数を動かして、
その返り値を子プロセス終了後に
親プロセスの方でチェックしようとしたら空になってました。
子プロセス内で得た返り値を
親プロセスの方でチェックすることは無理ですか?
0105nobodyさん
2006/07/09(日) 16:11:23ID:U99SwNUHログはテキストで取っていてSQLは使用していません。
0107nobodyさん
2006/07/09(日) 16:29:11ID:???setcookie("cookiename");
でやっても削除されないのですが、ほかのやり方あったら教えてください。
よろしくお願いします。
0108107
2006/07/09(日) 16:34:25ID:66lL3jio0109nobodyさん
2006/07/09(日) 16:36:00ID:???暇だからSQLの方法を出してやろう
*.php?page=1
$page = $_GET['page'];
$limit = $page * 10;
$sql = "SELECT * FROM BBS LIMIT $limit, 10";
$res = mysql_query($sql);
while ( $row = mysql_fetch_array($res) ) { print( $row[0] . "<hr>" ); }
0112nobodyさん
2006/07/09(日) 17:42:19ID:???例えばBBS.CGIというスクリプトをソースではなくてそれを実行したHTMLを取り込もうとしています。
試しに file(BBS.cgi) と file(http://~~~/BBS.CGI) を試しましたがどちらもソースが返ってきてしまいました。
phpにて実行結果の状態で取得することは可能なのでしょうか よろしくお願いします。
0113nobodyさん
2006/07/09(日) 18:11:29ID:???後者(file('http://example.com/'))でいける筈だが。
それで駄目なら、そもそもブラウザで該当のURLを指定しても
text/plainでソース出力がされてる状態じゃないのか?
0114nobodyさん
2006/07/09(日) 18:24:40ID:???該当のファイルをブラウザで直に表示させるとちゃんとスクリプトが実行されるようです。
ちなみにバージョンは4.3.11です。 蛇足ですがロリポ鯖です。
ファイル構成は
/aaa/index.php - 呼び出し元
/aaa/BBS.CGI -呼び出し先
同じディレクトリへ入れてるのが原因なのでしょうか。
それとも普段はphp5を使っていましてこれはphp4特有の仕様か何かでしょうか。
よろしくお願いします
0115nobodyさん
2006/07/09(日) 19:23:33ID:???帰ってきたソースってHTMLソースじゃないよな?
file関数使ったらもちろんソースが帰ってくるぞ。
取ってきたものをどうしたいんだ?表示したいのか保存したいのか?
0116nobodyさん
2006/07/09(日) 20:07:41ID:???function myfunc( ) {
// あーだこーだ
return ( 0 );
}
$pid = pcntl_fork();
if ( $pid == -1 ) {
die( 'could not fork' );
} else if( $pid ) {
// 親
pcntl_waitpid( $pid, $status, WUNTRACED );
} else {
// 子
$r = myfunc( );
exit;
}
if( $r == 0 ) {
// 成功
} else {
// 失敗
}
?>
>>104
こんな感じの処理で、最後のifで$rの値を見て処理を分けたいけど、
$rは空になってしまってるんですよ。
そういうもんなんですか?
0119nobodyさん
2006/07/09(日) 20:27:33ID:???exit は子を終わらせてるだけで、
その後はifの方にいくんですが、
「未定義の変数つかってんじゃねーよ」って怒られるんですよ。
子の中だと$rに0が入ってるのは確認できるんです。
0120nobodyさん
2006/07/09(日) 20:29:17ID:???アップしたサーバーで動作すると動作が変なのです。
ちゃっとセッションが保存されないみたいなのですが、これは問い合わせた方が良いですかね?
0121120
2006/07/09(日) 20:37:34ID:NEYaW9zv0122nobodyさん
2006/07/09(日) 21:18:04ID:???ん?前者ならファイルの内容そのものを取得する機能だから
CGIとして実行されないでソースが表示されるのは当たり前。
0123nobodyさん
2006/07/09(日) 21:34:45ID:???親プロセスが返された場合
pcntl_waitpid( $pid, $status, WUNTRACED );
で$rは何も定義されていない
子プロセスの場合
$r = myfunc( );
exit;
でexit;しているからif($r==まで到達しない
じゃね?
>子の中だと$rに0が入ってるのは確認できるんです。
てのはexit;前での確認だよな?
状況説明は他人にわかるようにね。
0124nobodyさん
2006/07/09(日) 21:48:38ID:QrRy9B/E<?= $a ?>
の<?= とはどういう意味なのでしょうか?
ぐぐり方が悪く 全然見つかりません。
0125nobodyさん
2006/07/09(日) 21:55:57ID:???そんな書き方もできるよっていう程度
<?php echo $a; ?>と同じ
0126124
2006/07/09(日) 22:00:26ID:QrRy9B/E迅速な回答ありがとうございました。
echo や printで試してみます。
0127nobodyさん
2006/07/09(日) 22:24:52ID:apK+YZH4文字列が長すぎる(例えば700文字を超える)場合の処理は、mb_strlen () で長さを計るしかないのでしょうか?
if (mb_strlen ($msg) > 700) {
$err_msg = "長杉";
}
もっとベターな方法があればお願いします。
0128nobodyさん
2006/07/09(日) 22:40:25ID:???というのは何でしょうか?
ローカルサーバーにはあるのですが、レンタルサーバーにはありません
0129nobodyさん
2006/07/09(日) 23:06:11ID:???基本的な発想はそれしかない
文字列の長さを調べる関数は少なくとも3つ
strlenとmb_strlenとmb_strwidthがあるけど
どれを選ぶかはケースバイケースだね
0131nobodyさん
2006/07/09(日) 23:08:30ID:vjWeIelg0132nobodyさん
2006/07/09(日) 23:20:56ID:???マニュアルのセッションのページに書いてあるよ。
簡単に言うと、どういう形式でセッション情報を保持するかを指定するためのもの。
0134nobodyさん
2006/07/10(月) 08:05:28ID:pIRoiH69unset
0135nobodyさん
2006/07/10(月) 09:20:16ID:DXTeExGF>明示的指定がなければ文字化けすることはあります。
>エンコーディングを指定してください。
と言われたのですが、どうやって指定すれば良いのでしょうか?
0136nobodyさん
2006/07/10(月) 09:49:25ID:???何をしようとして、そういわれたのかがわからないが
php.iniの設定を変えれば、もしかしたら、君が望む結果が得られるかも
■ このスレッドは過去ログ倉庫に格納されています