【PHP】下らねぇ質問はここに書き込みやがれ 24
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/07/07(金) 14:54:53ID:KnVubDvEここならお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
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の設定を変えれば、もしかしたら、君が望む結果が得られるかも
0137nobodyさん
2006/07/10(月) 09:50:29ID:???0138135
2006/07/10(月) 10:14:35ID:DXTeExGFすみません、サーバーにアプロードして、
セッションに格納すると文字化けするのですよ。
それを報告したらそのような返答が返ってきました。
どうにかして、エンコーディングを指定する方法はないのでしょうか?
0139nobodyさん
2006/07/10(月) 13:07:21ID:???0140nobodyさん
2006/07/10(月) 13:20:37ID:pIRoiH690141135
2006/07/10(月) 14:35:25ID:Q6XjtIhe>>139
良かったら教えていただけませんか?
.htaccessは使えないみたいです
0142軟式PHP
2006/07/10(月) 15:51:50ID:???0143135
2006/07/10(月) 15:56:12ID:Q6XjtIhe実行中に適用させるのですよね。
ini_set("internal_encoding","sjis");
と書くだけで良いのでしょうか?
0144nobodyさん
2006/07/10(月) 15:57:23ID:???試してみる。
マニュアルを読む。
http://jp.php.net/manual/ja/function.ini-set.php
0145135
2006/07/10(月) 16:01:17ID:Q6XjtIhembstring.encoding_translation 「On」「 Off 」
mbstring.func_overload 「0 」「0 」
mbstring.http_input 「auto」「 pass 」
mbstring.http_output 「SJIS」「 pass 」
mbstring.internal_encoding 「SJIS」「 no value 」
mbstring.language 「Japanese」「 neutral 」
mbstring.substitute_characte 「no value 」「no value 」
何を変更して良いのかちょっとわからないです・・・。
0146nobodyさん
2006/07/10(月) 16:10:20ID:???学生って何学生だ? もうちょっと人に伝えよう・理解してもらおうと努力しーや。
> 何を変更して良いのかちょっとわからないです・・・。
知らんがな。>>138 の
> どうにかして、エンコーディングを指定する方法はないのでしょうか?
に答えただけやがな。
そもそも >>138 の
> セッションに格納すると文字化けするのですよ。
の解決策はそれで合っているのか自分で考えたか?
0147135
2006/07/10(月) 16:30:53ID:Q6XjtIheこれを直したいだけなのですが、どうしていいかわからずさっぱりなのです。
0148asa
2006/07/10(月) 16:33:32ID:my/rgI9cメールにあるURLを記載し、そのURLをクリックするとファイルをダウンロードできるというものを作成したいと思っています。
(urlはhttp://www.hoge.com/moe/download.php?file_no=1という感じです)
しかし条件として、ブラウザを画面上に表示させないという制約があります(瞬間的に表示されるのはOKです)。
現在、下記のソースでファイルダウンロードを実行すると
1.IDが立ち上がる
2.ファイルダウンロードするかの選択ダイアログの表示される
3.『保存』を選択するとファイルはDLさせるが、IEの画面がそのまま残り
『取り消されたアクション Internet Explorer は、要求された Web ページにリンクできませんでした。
要求された Web ページは現在、利用できない可能性があります。 』という画面になる。
という流れになります。
ここで3)において、エラー(?)が表示されたブラウザを
閉じさせるということはできますでしょうか。
zipやlzhは、IEが一瞬だけ表示されすぐに消え理想的な動作をするのですが、
txt,pdf,docなどはIEが開かれたままになってしまいます。
わかるかたがいらっしゃいましたら
ご教授お願い致します。
$file_name="/usr/local/docs/hoge.txt";
$len = filesize($file_name);
//ファイルタイプにより処理を変更
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-Disposition: attachment ; filename=\"".basename($file_name)."\"");
header("Content-Length: ". $len);
header("Content-Type: application/octet-stream");
readfile($file_name); // ファイルを読み込んでHTTP出力
exit;
環境Linux9PHP4
0149nobodyさん
2006/07/10(月) 16:35:06ID:???それだけじゃ分からない。
文字化けする時は PHP ファイルの文字コードとか諸々の情報を提示しないと。
こんなやりとりが延々続くんだろうな…
0150nobodyさん
2006/07/10(月) 16:36:20ID:???リクエストヘッダを取得する処理をしていました。
サーバを移行して、cgi版PHPになりました。
apache_request_headers以外でリクエストヘッダを獲得する方法ってありますか?
0152135
2006/07/10(月) 17:12:42ID:Q6XjtIheお付き合い頂ければ幸いです。
各種PHPの保存する時の文字コードも関係するのですね。
Dreamweaver8で、デフォルトで保存しているのですが、どうやって調べれば良いのでしょうか?
0153150
2006/07/10(月) 17:14:01ID:???ゲートウェイサーバから送信されるx-up-subnoフィールドです。
$_SERVERにも$_REQUESTにも引っかからないので
さあ困ったなぁと。
0154135
2006/07/10(月) 17:16:26ID:Q6XjtIhe初期設定がシフトJISで、コードの方は全然いじっていません。
サーバーはUTS-8を使っているらしいので、設定をそれにして上書きすれば大丈夫ということですね?
■ このスレッドは過去ログ倉庫に格納されています