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

【PHP】下らねぇ質問はID出して書き込みやがれ 92

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/01/09(土) 20:11:42ID:lsb/cZ9k
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0696nobodyさん2010/02/07(日) 08:41:49ID:???
外部ファイルを変数に読み込む(file_get_contentsなど)
→追加したい文字列のあとに↑の変数をくっつける
→外部ファイルに↑でくっつけた文字列を新規書き込み
06976762010/02/07(日) 10:46:34ID:???
解決しました。
誠に恥ずかしい限りですが、ログファイルから読み出す時にchopしていないというオチでした。

ありがとうございました。
0698お願いします2010/02/07(日) 12:00:27ID:rDdEaSSw
file_get_htmlで取り出したファイルの内容の、
重複したリンク先のaタグを1つだけ表示させるにはどうすればいいですか?

初心者ですが宜しくお願い致します。
0699nobodyさん2010/02/07(日) 12:11:16ID:???
>>698
array_unique
0700nobodyさん2010/02/07(日) 13:53:32ID:???
ちょうつまらないネコの恩返しか
パンツも見えないんだぜ
0701nobodyさん2010/02/07(日) 14:58:34ID:EhH57Jpr
MySQLでdataというテーブルのtime,codeというレコードにtime=$input_time かつ その列のcodeでcode=$input_codeを満たすものがある場合はtrue、無い場合はfalseのように判定したいのです。どうしたらよいですか?
0702nobodyさん2010/02/07(日) 15:01:21ID:???
>>701
$sql = 'SELECT * FROM data WHERE time = ' . $input_time . ' AND code = ' . $input_code;
0703nobodyさん2010/02/07(日) 22:09:52ID:EhH57Jpr
>>702
ありがとうございます
mysql_query($sql)とすると常にfalseとなってしまいます。
0704nobodyさん2010/02/07(日) 22:23:00ID:???
>>703
なぜfalseが返るかはマニュアルに書いてありますよ
http://jp.php.net/manual/ja/function.mysql-query.php

・PHP内で生成されたSQL文が正常であるか
・DBへのコネクションが正しく行われてるか

まずはこの辺を調べてみましょう
0705nobodyさん2010/02/07(日) 22:46:26ID:qbh8YQtK
サーバが作りだすレスポンスヘッダを削除することはできないんでしょうか?
header()で値を変えることはできるんですが。。。
0706nobodyさん2010/02/07(日) 23:10:16ID:YNGHwsE+
ttp://blog.livedoor.jp/j_yuze/archives/51523327.html
ここで使われているcURLってどこに行けばあるんでしょうか?

0707nobodyさん2010/02/08(月) 03:51:28ID:???
>>706
そんなの本人にきかないとわからない
cURL関数のユーザーノートに似たようなクラス作ってる人がいるからそれ使うか参考にして
自分で実装すればいいんでない?
メソッド名や流れからどういう処理かは想像できるだろうし 
http://www.php.net/manual/ja/book.curl.php
0708nobodyさん2010/02/08(月) 03:57:17ID:???
>>705
サーバプログラム(Apacheとか)側をいじらないと
それに依存してるPHPでどうこうするのは無理じゃないかと
http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html
0709nobodyさん2010/02/08(月) 09:34:24ID:0nwSZc19
連番HTMLファイルをリロード毎に順番に読み込む場合

//連番の番号を打ち込んだテキスト読み込み
$fp = @fopen("count.txt","r+'");
flock($fp, LOCK_EX);
$count = fgets($fp, 256);
$count++;
rewind($fp);
fputs($fp, $count);
fclose($fp);

//htmlファイルの読み込み
$HTML = "C:/test/$count.html";
$HTML2 = file_get_html("$HTML2");

//ファイル番号を確認
echo "$HTML";

としたら、エラーが出てしまい、ソースを見ると
urlの$countの数値の前に?がついています。

対処法を教えてください。宜しくお願いしますm__m
0710nobodyさん2010/02/08(月) 09:39:40ID:???
>>709
時間がないから適当レス
?がつくという症状で思い当たるのはUTF BOMだね
07117092010/02/08(月) 11:54:25ID:0nwSZc19
>>710
UTF-8Nで保存したら動きました!ありがとうございます!
0712nobodyさん2010/02/08(月) 13:30:40ID:2kEGmSWr
ファイルの指定した行から指定した行数だけ取り出すことはできますか?
例)1129行目から20行分取り出す。とか。

いったん配列にすべてを入れてそこから取り出すことも考えたのですが負荷が大きいためなしにしました
0713nobodyさん2010/02/08(月) 15:00:18ID:???
負荷が大きいといっても入出力部分ぐらいでしょ(ディスクからの読み取り時間)
ファイルのサイズが1MBぐらいなら全然問題ないよ
10MBぐらいになるとさすがにCPUやメモリに負荷かかってレスポンスも若干遅く感じるけど
ファイルの位置(何バイト目か)がわかってるならそこまでfseekして
そこから取り出したい行数分fgetsすれば10MBでもCPUもメモリもI/Oも問題ない
目的の行数の開始点が何バイト目かわかればいいんだけどなんかそんな関数あったっけ?
それを割り出すために配列使っちゃうようなら結局同じ結果になっちゃうんだけどね
まぁサイズがわからないからなんともいえないけど1MBぐらいなら問題ないよ
ログが増えるようなら定期的にローテーションしてログ切り替えればおk
0714nobodyさん2010/02/08(月) 15:01:44ID:???
配列にいれたら負荷になるほどのファイルならDB使うしかないと思うが
07157132010/02/08(月) 15:04:43ID:???
ちなみにテストしたデータは約10MBで約18万行あるファイル=配列数約18万
0716nobodyさん2010/02/08(月) 15:26:59ID:???
平均58byteじゃ正規化してもそうは変わらなそうだな
固定行なら
fseek($fp,開始行*行のバイト);
for (0から20){
 $lines[]=fgets
}

固定じゃないなら
for (目的行まで回す)
fgets
}
for (0から20){
 $lines[]=fgets
}

こんなもんじゃねーの
0717nobodyさん2010/02/08(月) 16:24:12ID:???
ワロタw
0718nobodyさん2010/02/08(月) 16:31:32ID:???
あれだ、下の方の行に行くほど遅いんだな
変更されないんならインデックス作っとくか

まーDBにでも突っ込んだほうが
0719nobodyさん2010/02/08(月) 16:35:18ID:???
そりゃDB使えるならDB使った方がいいわ

さもなければ固定長にして正規化かけろと
0720nobodyさん2010/02/08(月) 16:47:58ID:???
なんか昔の掲示板CGIとか思い出す。
書く時は末尾に追記して、読む時は末尾からリバース読み、みたいな。
0721nobodyさん2010/02/08(月) 16:54:52ID:oaOBKDG6
PDO::prepare 日付型を入力出きないのですが、どうすれば良いのですか?
PHPは5.1.4 DBサーバーは mysql5.1
例
$pp = $db->prepare("insert into test (date)values(?)");
$pp->execute(array('2010-01-01'));
0722nobodyさん2010/02/08(月) 17:06:27ID:???
>>721
dateが関数名とかぶるからだと思う
バッククォートでかこってみ

$pp = $db->prepare("insert into test (`date`)values(?)");
0723nobodyさん2010/02/08(月) 17:16:43ID:oaOBKDG6
例として良くなかったのかもしれませんが、dateが別のものでもそうなります。
0724nobodyさん2010/02/08(月) 17:31:39ID:???
とりあえずerrorInfoでエラー確認
0725nobodyさん2010/02/08(月) 17:41:29ID:???
>>723
テストしたけどコードは問題ないね
エラー内容見てみないと何とも言えない
07267212010/02/08(月) 17:47:39ID:???
すいません昨日は出来なかったのですが今日はは出来ました
失礼しました
原因はよくわかりませんが…
0727nobodyさん2010/02/08(月) 21:53:15ID:v0XTz3WC
はじめまして

どこで質問すればいいのかわからなかったのですが
簡易ブログ(タイトルと内容のみ更新される)ようなスクリプトってありませんでしょうか?

口たらずなので考えてるものがこれで伝わるかわかりませんが
どうぞよろしくおねがいします
0728nobodyさん2010/02/08(月) 22:04:01ID:???
MTとかwordPressとか?
0729nobodyさん2010/02/08(月) 22:10:56ID:v0XTz3WC
>>728
レスありがとうございます
そういう凝ったものではなくて
ログインページでログインし

タイトル:[ブログ始めました]

内容:[てすとてすとてすとてすとてすと]

[送信] [リセット]

という感じでフォームに入力すると

<h2>ブログを始めました。</h2>

<p>てすとてすとてすとてすとてすと<br />
てすとてすとてすとてすとてすと<br />
てすとてすとてすとてすとてすと</p>

というような単純な文を新着情報みたく上に上にだんだんと追加されて行く感じのような物です

ほんとうに説明下手で申し訳ないです・・・
0730nobodyさん2010/02/08(月) 22:14:38ID:v0XTz3WC
連投すみません

自分で探していて近いものを見つけたので参考までに・・・
http://www.ortecweb.com/cgi/koukai/snews/

動作的には理想的なのですが一行ではなく
タイトルと内容で更新できるようなものを探しています
0731nobodyさん2010/02/08(月) 22:21:17ID:???
>>730
ttp://php.s3.to/simple/#update
0732nobodyさん2010/02/08(月) 23:08:56ID:???
twitterでいい気もする
0733nobodyさん2010/02/08(月) 23:42:00ID:v0XTz3WC
>>731
こんな有名どころを見逃がしていたとは・・・・

まさに理想通りのものでした
本当にありがとうございます!

>>732
ガジェットじゃいまいち雰囲気が合わずで・・・
0734nobodyさん2010/02/09(火) 00:02:25ID:HTi7WI02
掲示板の書き込みログの管理はMySQL、.datファイルのどちらがいいのでしょうか?
0735nobodyさん2010/02/09(火) 00:17:30ID:???
規模にもよるけど掲示板程度にMySQLを使うのはどうだろうね
SQLiteならファイル単位で扱えるし標準で使えるからちょうど良いよ
0736nobodyさん2010/02/09(火) 00:25:53ID:???
別にMySQLでいいじゃん
0737nobodyさん2010/02/09(火) 00:32:54ID:???
掲示板程度を作るのにテキストファイルを使うのは面倒だと思うようになるよ。
0738nobodyさん2010/02/09(火) 00:34:42ID:???
ほしい機能にもよるけど検索とかするならDBのが管理は楽だろうね
0739nobodyさん2010/02/09(火) 02:41:31ID:???
text使って断片化するのが嫌なので、
板、スレッド情報をDBに、レスをファイルにつっこんでる俺がいる
0740nobodyさん2010/02/09(火) 02:48:57ID:???
Windows鯖でPHPとは珍しいことしてますね
0741nobodyさん2010/02/09(火) 02:54:38ID:???
phpからシェルスクリプトを実行してエラーがあった場合、シェルスクリプトのリターンコード
を受け取りたいのですが

通常、シェルスクリプトの場合以下のリターンコードの筈なのに

真:0
偽:1

失敗しても0が返ってきてしまいます。

スクリプトは以下のような感じです。

<?php

exec("/usr/sbin/useradd -s /sbin/nologin hoge 2>&1",$rCode);
echo `echo $?`;

?>

ちなみにコマンドラインから実行した場合は以下の様になります。

[root@usavich scripts]# useradd -s /sbin/nologin hoge 2>&1
useradd: ユーザ hoge は存在します
[root@usavich scripts]# echo $?
9


よろしくお願いいたします。
07427412010/02/09(火) 03:02:07ID:7vs+hwlZ
741です
IDだします
0743nobodyさん2010/02/09(火) 03:17:39ID:???
string exec ( string $command [, array &$output [, int &$return_var ]] )
って書いてあるけど
07447412010/02/09(火) 03:35:44ID:7vs+hwlZ
なるほど。ちょっと例えが悪かったですか

例えば

<?php

exec("/etc/init.d/httpd restart",$rCode);

var_dump($rCode);
?>

array(2) {
[0]=>
string(28) "httpd を停止中: [成功]"
[1]=>
string(28) "httpd を起動中: [成功]"
}


とすれば、もちろん実行結果が配列として返ってくるのですが、正常に処理されたか
自分で判定作らなきゃいけないので、面倒くさいなぁと思いまして
シェルのリターンコードで何とかしたいのです

[root@usavich scripts]# /etc/init.d/httpd restart
httpd を停止中: [失敗]
httpd を起動中: grep: /etc/httpd/conf/httpd.conf: No such file or directory
httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: No such file or directory
[失敗]
[root@usavich scripts]# echo $?
1
0745nobodyさん2010/02/09(火) 04:45:32ID:???
> int &$return_var
0746nobodyさん2010/02/09(火) 06:59:49ID:???
>>741
こういうときは一発で

exec("/etc/init.d/httpd restart > /dev/null 2>&1 ; echo $?",$rCode);
var_dump($rCode);
0747nobodyさん2010/02/09(火) 10:48:00ID:CZAEoLHq
copy(元ファイル, 移動先);

この移動先を複数箇所指定するにはどうしたらいいでしょうか?
よろしくおながいします
0748nobodyさん2010/02/09(火) 10:51:44ID:???
>>747

copy(元ファイル, 移動先);
copy(元ファイル, 移動先2);

しか無いし、駄目な理由もないと思うけど・・。
0749nobodyさん2010/02/09(火) 10:58:43ID:CZAEoLHq
>>748
やはり其れしかないですか
ありがとう
0750nobodyさん2010/02/09(火) 11:08:26ID:???
自分で関数つくればいいじゃなーい
myCopy(String source, String[] dest)
0751nobodyさん2010/02/09(火) 11:17:33ID:???
>>750
結局中身は一緒でしょ。
書き方はスッキリするかもしれないけど。
0752nobodyさん2010/02/09(火) 11:26:10ID:???
foreachでarray回すだけ(´・ω・`)
0753nobodyさん2010/02/09(火) 11:37:02ID:???
>>749
なんで>>748じゃだめなの?
0754nobodyさん2010/02/09(火) 12:23:29ID:???
自分で関数書くとかどこのハッカーだよ
組込みでない機能なんか使えねーよ

ってことでしょ
0755nobodyさん2010/02/09(火) 13:44:52ID:???
自分で関数書くにしてもその内容が>>748なんでしょw
0756nobodyさん2010/02/09(火) 13:45:32ID:???
あー>>749の間違い
0757nobodyさん2010/02/09(火) 14:47:19ID:qqG+/ley
array_intersect_keyと同じような動作を再帰的に行うにはどうしたらよいでしょうか。

多次元配列のなかから、指定した構造部分だけ抜き出したいのです。
よろしくおねがいします
0758nobodyさん2010/02/09(火) 14:54:34ID:???
複数コピーをアトミックにやろうと思うと・・・
0759nobodyさん2010/02/09(火) 14:58:57ID:???
>>757
http://www.php.net/manual/ja/function.array-intersect-key.php#93720
0760nobodyさん2010/02/09(火) 15:11:18ID:qqG+/ley
>>759
お、ありがとうございます!
0761nobodyさん2010/02/09(火) 18:26:17ID:???
>>754
数行ですむ処理を関数で書いてどんなメリットがあるかっていう話でしょ。
もちろんもうちょっと複雑な処理も絡めて関数にするなら意味があるかもだけど。

そもそも>>747の質問の答としては「無い」で良いわけで蛇足。
0762nobodyさん2010/02/09(火) 20:29:42ID:???
だめだよ
0763nobodyさん2010/02/10(水) 00:28:55ID:FNWat3EE
セッションってsession.save_pathを設定していないと使えないと認識してるんですが
間違ってますか?
ローカルでもxreaで借りてるサーバでもsession.save_pathがno valueなのに
普通にセッション使えてるんですが、なぜでしょう?
0764nobodyさん2010/02/10(水) 00:37:34ID:???
OSの一時ディレクトリにでもなるんじゃない?
0765nobodyさん2010/02/10(水) 10:42:03ID:J/EM4cEc
PHP 5.2.6-3ubuntu4.5 です。
Cannot use output buffering in output buffering display handlers
ってエラーがでるんですが、これはどうやったら直せるんでしょうか?


0766nobodyさん2010/02/10(水) 10:46:05ID:???
>>765
http://codeigniter.com/forums/viewthread/84317/
0767nobodyさん2010/02/10(水) 11:19:06ID:???
ereg()って非推奨になったんだね・・・
preg_match()を使えって事なんだろうか・・・?
0768nobodyさん2010/02/10(水) 11:22:40ID:???
>>1
07697632010/02/10(水) 11:45:28ID:FNWat3EE
>>764
ありがとうございます
OSの一時ディレクトリっていうと/tmpのことですか?

ttp://sb.xrea.com/archive/index.php/t-11933.html
↑ここ見ると、デフォルトのsession.save_pathは/tmpになってるらしいんですが
phpinfo()確認すると、ローカルでもxreaで借りてるサーバでもno valueなんですよね。何も変更してないのに。
まぁ今のところ問題なく使えてるんでいいんですが、なんか気持ち悪いなぁと思って。。
0770nobodyさん2010/02/10(水) 11:59:46ID:???
>>769
公式のマニュアルにちゃんとのってる

PHP: 実行時設定 - Manual
http://www.php.net/manual/ja/session.configuration.php#ini.session.save-path

0771nobodyさん2010/02/10(水) 12:08:58ID:fc0U4ClX
【OS名】CentOS 5.4
【PHPのバージョン】php5.1.6
【連携ソフトウェア】無し
【質問内容】
渡される変数にはファイル名が入っておりますが、フルパスで格納されてます。
/var/www/html/example.dat
ファイル名だけをとりだしたいのですがexplodeで切ると階層が異なる場合はうまく取り出せません。
ファイル名だけを取り出すような方法があれば教えていただけないでしょうか?
07727632010/02/10(水) 12:18:33ID:FNWat3EE
>>770
session.save_pathがno valueだと/tmpに保存される
ということで良いんでしょうか?
理解が遅くてすみません
0773nobodyさん2010/02/10(水) 12:24:04ID:???
>>771
basename
0774nobodyさん2010/02/10(水) 12:25:46ID:???
>>772
session.save_pathが空の場合の挙動はsession.save_handler次第。
session.save_handlerがfilesモジュールだと仮定する。
filesモジュールは、session.save_pathが空の場合にはphp_get_temporary_directoryというPHP内のAPIによってディレクトリを決定する。
php_get_temporary_directoryは、OSのAPIを呼んだり環境変数を読んだりしてデフォルトの一時ディレクトリを決定する。
Unixならほぼ/tmp。
0775nobodyさん2010/02/10(水) 12:26:09ID:???
>>772
リンク先に書いてある session_save_path() も確認したんだよね?
07767632010/02/10(水) 12:49:22ID:FNWat3EE
>>774
ありがとうございます
大体理解できました

>>775
確認しましたが、no valueなので何も表示されません。
0777nobodyさん2010/02/10(水) 12:52:46ID:???
>>772
この質問は過去スレで一度見たけど
過去スレは見ましたかね?
07787632010/02/10(水) 12:59:30ID:FNWat3EE
>>777
Googleでは検索しましたが、過去スレは特に見てないですね。
774さんのような明確な回答が見つけらなかったんで質問しました。
0779nobodyさん2010/02/10(水) 13:00:28ID:???
>>778
過去スレでまったく同じ質問してた人は回答者に逆切れまくってたけどなw
0780nobodyさん2010/02/10(水) 16:17:18ID:SkjYm3w1
フォームから送られたデータにHTMLタグが含まれているのですが
それをValidなXHTMLに変換したいと思っています

PHPモジュールやライブラリ、あるいは他に何か方法があれば教えてください
0781nobodyさん2010/02/10(水) 16:50:33ID:???
>>780
tidy
0782nobodyさん2010/02/10(水) 16:53:14ID:gNzUI44E
指定したフォルダ内のexeを実行させる方法を教えてください
0783nobodyさん2010/02/10(水) 16:57:16ID:gNzUI44E
あ、ひょっとしてexecでいいのかな

お前等糞の役にもたたねーな
0784nobodyさん2010/02/10(水) 16:59:51ID:???
>>782-783
サーバサイドならexecやsystemでいいが
何も考えずに使うとセキュリティ面で深刻な問題があるから注意

が態度がむかつくから教えない。
0785nobodyさん2010/02/10(水) 17:05:43ID:???
ワロタw
0786nobodyさん2010/02/10(水) 17:49:58ID:SkjYm3w1
>>781
ありがとう
0787nobodyさん2010/02/10(水) 18:07:08ID:Xa4vEadU
サーバーサイドでアスキーアートを画像化したいのですが、
imagettftextとモナーフォントを使ったところ、ガタガタになってしまいました。
また、線の太さも実際にブラウザで見るよりも太くなってしまいます。

なにが原因なのでしょうか?
よろしくお願いします。
0788nobodyさん2010/02/10(水) 18:13:00ID:???
>>787
フォントの指定
0789nobodyさん2010/02/10(水) 23:25:49ID:gX/LcLaO
質問です
$a[0] = "あいうえお";
$a[1] = "あいうえおかきくけこ";
$b[0] = 12345;
$b[1] = 67890;
$text = "あいうえおあいうえおかきくけこ";

とある時に、str_replace($a,$b,$text);
にすると、出力が
1234512345かきくけこ
になってしまいます。

どうしてそうなるかは理解できたのですが、解決方法がわかりません
よろしくお願いします。
0790nobodyさん2010/02/10(水) 23:38:32ID:???
$a[1] = "あいうえお";
$a[0] = "あいうえおかきくけこ";
$b[1] = 12345;
$b[0] = 67890;
0791nobodyさん2010/02/10(水) 23:44:10ID:???
$a= array_reverse($a);
$b= array_reverse($b);

これをかませろw
0792nobodyさん2010/02/10(水) 23:57:13ID:gX/LcLaO
>>791
やってみましたがダメでした。
順番関係なく、「あいうえお」が一致した時点で置換してしまっているようです。
0793nobodyさん2010/02/11(木) 00:27:01ID:???
$a[0] = "あいうえおかきくけこ";
$a[1] = "あいうえお";
$b[0] = 67890;
$b[1] = 12345;
でいいじゃん
07947922010/02/11(木) 00:38:31ID:qOD6LI8k
あぁ、勘違いしてました
ありがとうございました
0795nobodyさん2010/02/11(木) 06:33:53ID:Mcgu4g2h
ZページからAページにアクセス後、
AページのheaderのLocationでBのページに飛んだとき、
Bで受けるリファラがZページになる気がするのですが、
このリファラをAページのものにできないでしょうか。
0796nobodyさん2010/02/11(木) 08:23:46ID:???
アフィリエイト会社をだますんですねわかります
■ このスレッドは過去ログ倉庫に格納されています