【PHP】下らねぇ質問はここに書き込みやがれ 71
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/07/17(木) 19:42:52ID:DVaNTncwPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0351nobodyさん
2008/07/31(木) 15:58:17ID:???$P=$_GET["p"];
if($P>0){
$Prev=$P-1;
$PrevPage="<a href='weapon.php?p={$Prev}'>前の10件</a>";
}
$Size=sizeof($Data);
if($Size/10-1>$P){
$Next=$P+1;
$NextPage="<a href='weapon.php?p={$Next}'>次の10件</a>";
}
?>
<p>
全<?=$Size?>件 | <?=$PrevPage?> <?=$NextPage?>
</p>
<?php
for($i=$P*10;$i<$P*10+10;$i++){
$line=explode(",",$Result[$i]);
?>
0352nobodyさん
2008/07/31(木) 16:02:49ID:???0353nobodyさん
2008/07/31(木) 19:14:58ID:???static変数はクラスでオブジェクトのプロパティとは別に値を共有する場合に使う
例えばいくつかのオブジェクトがあってもDBの接続は一つでよくて、
それを使いまわしたいときとか
0354nobodyさん
2008/07/31(木) 20:45:30ID:???0355nobodyさん
2008/07/31(木) 21:38:39ID:hFDJvSk0ほんとにおしましか?
0356nobodyさん
2008/07/31(木) 21:47:02ID:LBsOXYef0358nobodyさん
2008/07/31(木) 22:05:05ID:ANn4X+PY<img src=test.jpg width=100px height=100px />
というふうに=の後が"で囲っていないソースがあるとします。
これをPHPで"を付けるようにする関数はありますでしょうか?
0359nobodyさん
2008/07/31(木) 22:24:16ID:???0361nobodyさん
2008/08/01(金) 02:04:59ID:NVSNXw+7いまの動いてるアプリどーすればいいんだよホント。トホホ
めんどくせーーーーーーーー
0362nobodyさん
2008/08/01(金) 03:51:57ID:???そろそろだな
0363nobodyさん
2008/08/01(金) 04:40:06ID:???$deta="<html><head></head><body>
あああ<font color='#ff0000'>いいい</font>うううえええお
</body></html>";
$fpos=strpos($deta,"<body>");
$npos=strpos($deta,"</body>");
$body=substr($deta,$fpos,$npos);
echo $body;
?>
↑というテストコードを書いたとします、とすると結果的に’あああいいいうううえええお’が出力されます。
同様なコードで$detaを、別のhtmlに変えて、h4タグだけを出力させるため、
$fpos=strpos($deta,"<h4>");
$npos=strpos($deta,"</h4>");のように書き換えて、コードを実行させると
<h4>タグに加えて余分なhtmlコードが付加されてしまいます。
例えば、’<h4>PHP初心者です</h4>あああいいううううえええおおお’という感じです。
原因に、htmlコードにスペースや改行が含まれているからとか、エスケープしなければならない文字が含まれてるとか
考え、テスト用のコードにスペースや改行を加えて実行させたところやはり正常に、’あああいいいうううえええお’が出力
されます。
この差と原因はなんなんでしょうか?
0364nobodyさん
2008/08/01(金) 05:09:18ID:???本当に
$deta="<html><head></head><body>
あああ<font color='#ff0000'>いいい</font>うううえええお
</body></html>";
のときは正常なの?
ブラウザ上の表示だけじゃなくHTMLソースみた?
0365nobodyさん
2008/08/01(金) 05:47:24ID:???文字列を抜き出すなら正規表現でやってください
0366nobodyさん
2008/08/01(金) 08:29:24ID:???やりたいこと:
LIMIT の部分に PHP からパラメータを割り当てたい。
問題:
LIMIT 部分に対してだけエラーが起きてしまう。
WHERE に対してパラメータを割り当ててもエラーにはならない。
以下がコード(一部抜粋)です。
$sql = 'select store_id, store_code from store limit 0, :limit_size';
$st = $conn->prepare($sql);
$st->bindValue('limit_size', 5);
$st->execute();
$rows = $st->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);
以下が発生したエラーです。
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[4200
]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right sy
tax to use near ''5'' at line 1' in ...
間抜けな間違いをしているのだと思うのですが、
LIMIT でだけエラーが出る理由が分からず…orz
0369nobodyさん
2008/08/01(金) 09:13:50ID:???書き込む前に単純なコードにして動作確認後、
DB 接続以外は削除して貼り付けてました。
DB 接続で挙動が変わる話なのでしたら失礼しました。
>> 368
おお!できました!
う〜む、型指定しないとダメだったとは…勉強になりました。
ありがとうございました。
0370nobodyさん
2008/08/01(金) 13:28:35ID:???多分、「〜limit 0, '5'」になってるから。
0371nobodyさん
2008/08/01(金) 14:19:57ID:???関数を使って80字ルールに収まるように
書きたいです。一行づつファイルを読んで
それを文字列として結合してるから、return で
fileオブジェクトを返すとか...phpよくわからんorz
0372nobodyさん
2008/08/01(金) 14:44:37ID:EXnjM6svというデータがあって、さしすせそまでを取り出したいときの方法を教えてもらえませんか
0373nobodyさん
2008/08/01(金) 15:22:30ID:???質問になってないのでやりなおし
>>372
substr
preg_match
file
explode
お好きなものを。
0374nobodyさん
2008/08/01(金) 16:35:00ID:axKZA4yxPHPでHTMLタグを書いてそれをDBに放り込むときに
「'」「"」などを「\'」や「\"」に置き換えたほうがよいのでしょうか?
0376363
2008/08/01(金) 17:15:19ID:???>>365
ご回答ありがとうございました。
正規表現とstrip_tags()の組み合わせでなんとかタグを抜き出せました。
0377nobodyさん
2008/08/01(金) 17:19:18ID:g19BqkRUreset ? 配列の内部ポインタを先頭の要素にセットする
prev ? 内部の配列ポインタをひとつ前に戻す
next ? 内部配列ポインタを進める
end ? 配列の内部ポインタを最終要素にセットする
という関数が用意されていますが
初期のポインタ位置をセットするにはどうしたら良いんでしょうか?
0378nobodyさん
2008/08/01(金) 17:31:07ID:???汎用ライブラリとか使っててプレースホルダが利用できないときはmysql_escape()とかpg_escape()とか使う。
0380377
2008/08/01(金) 18:11:52ID:g19BqkRUやりたい事は5つの要素を含む連想配列があった場合に
3つ目の要素から次の要素(4つ目)とひとつ前の要素(2つ目)の
値を引き出したいのです。
0382377
2008/08/01(金) 18:22:30ID:g19BqkRU$ary = array("st"=>"aaa","2"=>"bbb","34"=>"ccc","99"=>,"ddd","ed"=>"eee")
という配列があった場合に
$ary["34"] の値からみて
前の値 $ary["2"] と次の値 $ary["99"] を取得したい
色々やってみているけどやっぱりeachで読み飛ばすしかないんでしょうか?
0383nobodyさん
2008/08/01(金) 18:23:22ID:???よーするに
array('りんご' ,'ごりら' ,'らっぱ' ,'ぱせり' ,'りす');
とあった時に当然最初のポインタはりんごから始り、なんらかのループ処理とかするが、
何らかの処理をしていきなりらっぱにポインタを置き、そこからの処理をしたいということだな?
ちなみに答えはわからんw
0384377
2008/08/01(金) 18:26:52ID:g19BqkRUそういうことです
らっぱにポイントを初期セットしたい
0385nobodyさん
2008/08/01(金) 18:30:12ID:???34というキーを発見したら、一つ前に戻って(prev)それから二つ進めば(next * 2)いいんじゃないの?
と試していない思いついた事を言ってみる
なんかもっといい方法がありそうだけど・・
あとデータの形をもっと工夫できないのかな・・
0387nobodyさん
2008/08/01(金) 19:13:38ID:???まぁ、無いって事はループ処理しろって事だと思うが
あるのかな・・
0388377
2008/08/01(金) 19:25:48ID:g19BqkRUどうしようも無いようなのでとりあえず
while と each で読み飛ばして取得するようなもので
ごまかしておきました…件数が増えるとorz
0391夜中に質問すいません
2008/08/02(土) 03:58:45ID:F4PgkzNbfile_get_contentsって下記のように書いて取得してみましたがうまくいきませんでした。
どのように書いてあげればいいでしょうか?
yahooにしてますが、URLは自分のサイト内になります。
<?php file_get_contents('http://www.yahoo.co.jp'); ?>
0392nobodyさん
2008/08/02(土) 04:08:44ID:???0393夜中に質問すいません
2008/08/02(土) 04:17:14ID:???こんな夜中に有難うございましたm(_ _"m)ペコリ
0394nobodyさん
2008/08/02(土) 05:53:14ID:Fpbct2Dcブログ内検索のような検索ルーチンを作りたいと思っています。
こういう事が出来るプラグインや作り方の参考になるサイトはありませんか?
0395nobodyさん
2008/08/02(土) 11:54:38ID:???ブログっていっても色々あるだろ
おおざっぱすぎるんだよ
ていうか多くのブログでデフォルトで検索機能はついてるはずだが
ないならNamazuでも入れときゃいいんじゃね?
0396nobodyさん
2008/08/02(土) 17:51:03ID:???あれ正直使えないんじゃないかと思うよ
0397nobodyさん
2008/08/02(土) 18:21:43ID:QOTyBDTF0398nobodyさん
2008/08/02(土) 18:27:10ID:???0399 ◆gw9Vq5kGF2
2008/08/02(土) 19:03:15ID:37jLYgzMfor ($rand=0; $rand<10; $rand++){
$data .= $rand
}while($i<$count){
$fp = fsockopen ($host, 80, $errno, $errstr, 30);
if (!$fp) {
error("接続できません<br>\n");
0400 ◆gw9Vq5kGF2
2008/08/02(土) 19:04:55ID:37jLYgzM// 読み書きのタイムアウト設定
fwrite($fp, "GET" . $url . " HTTP/1.0\r\n");
// ヘッダの終了を通知
fwrite($fp, "\r\n");
// 内容の送信
fwrite($fp, $data);
// 内容の終了を通知
fwrite($fp, "\r\n");
while (!feof($fp) && $he != "\r\n"){
$d= fgets($fp, 512);
}
// ソケットがタイムアウトしたかどうか調べる
$stat = socket_get_status($fp);
if ($stat["timed_out"]) { echo "timeout"; }
// ソケットを閉じる
fclose ($fp);
$i++;
$rand++;
}
}
だいたいはこんな感じで、実際にデータを送信してみました
。
一回目は1で2回目は2......
と、ループの回数だけデータを送信したいのですが、レスポンスには、
555555555
と、5が9回帰ってきます。
これを123456789
とレスポンスがかえってくるようにすすにはどうしたらよいですか?
0401nobodyさん
2008/08/02(土) 19:34:24ID:xYLkDBTE0402nobodyさん
2008/08/02(土) 20:01:05ID:lDM3zReIユーザーフォルダ php だとphpはurlにばっか引っかかってphp関係無いページもヒットするから使えない
0403nobodyさん
2008/08/02(土) 20:02:20ID:???0404nobodyさん
2008/08/02(土) 23:20:28ID:WZrTSOfFよい方法はないでしょうか?
phpの標準関数をみていると、
このような場合、連想配列に入れて返却して、
受け取り側で、連想配列のキーを元にデータを取り出しています。
ただ、これは受け手側がキーの名前が分からないといけないし、
あまりにも無骨過ぎるので、もう少しスマートな方法がないかと思っています。
# そもそもphpの言語仕様としてjavaにあるようなクラスのpublicフィールドがないために、
# このようなことがおこるのだと思いますが、phpにもそれに相当する機構が欲しいですね。
よろしくおねがいします。
0405nobodyさん
2008/08/02(土) 23:21:45ID:???簡単にデータベース作る方法ご存知じゃないですか?
MYSQLとCSVは苦手でして(汗
0407nobodyさん
2008/08/02(土) 23:31:18ID:WZrTSOfFJavaの場合には、その実装クラス(implementクラスでも可)に、
pubicのフィールド(クラスの定義済み定数)を書いて、
受け手側は、必ずそのクラスのpublicのフィールを用いて、
必要な値を取得します。
phpのスレでこういうこというのは何ですが、
public、privateの区別もないですし、このようなフィールを定義する
機構もありません。生のリテラルで書けばいいのでしょうけど、
これだと、関数の実装が変更された場合にエラーが見つけにくくなります。
# Javaであれば、このような場合、コンパイルエラーが発生して実行できません。
phpはjavaにはない便利な関数があって、生産性が良く気軽に使いやすいですが、
コンパイル時にではなく実行時にしかエラーが分かるのがphpのセキュリティーの点からマイナスです。
0408nobodyさん
2008/08/02(土) 23:34:27ID:???あるよ
0409nobodyさん
2008/08/02(土) 23:38:43ID:WZrTSOfFねぇよ。
0410nobodyさん
2008/08/02(土) 23:47:28ID:???0411nobodyさん
2008/08/03(日) 01:56:20ID:???0412nobodyさん
2008/08/03(日) 02:10:26ID:???そいつは紛れも無いばかもんだろ
0413nobodyさん
2008/08/03(日) 12:44:27ID:HcRMDkB6下記のように記録されているbus_data.csvを住所1に含まれている都道府県を検出しながら、
ken_code.csvの都道府県JISコード昇順にソートして同じファイルに書き換えるプログラムを考えてるのですが
ソート処理に悩んでいます。何か良い方法はないでしょうか。
@bus_data.csv
会社名,住所1,住所2,電話番号
会社名,住所1,住所2,電話番号
会社名,住所1,住所2,電話番号
・
・
・
(約1000件)
Aken_code.csv
北海道
青森県
・
・
・
0415nobodyさん
2008/08/03(日) 13:01:09ID:HcRMDkB6MySQLも勉強しようとはおもってますが、
まだPHPも覚えたてで、どうPHPとDBをリンクさせるのかすらわからないので・・・。
0417nobodyさん
2008/08/03(日) 13:06:00ID:???0419nobodyさん
2008/08/03(日) 14:58:32ID:Tg76RJl4function room_member_check(){
if(false == ($memfile = fopen($mem_file, "r"))){
Func_Error("関数_".__LINE__); ←なぜかこの処理に入ってしまう
}
(以下略)
}
----------------------------------
room_member_check(); ←これをコメント化するとプログラムは正常に動く
if(false == ($memfile = fopen($mem_file, "r+"))){
Func_Error("部屋_".__LINE__);
}
$flg = 0;
(以下略)
大体このような感じなのです。
どちらの関数も同じフォルダにあるので、ファイル名の参照エラーは考えられません。
ヒントか何かないでしょうか?
0420nobodyさん
2008/08/03(日) 15:02:40ID:???0422nobodyさん
2008/08/03(日) 17:24:00ID:HcRMDkB6都道府県名ごとで47回ループさせて別の配列に移し替えていくという方法ですか?
考えはわかるんですが、具体的にどうコーディングすればいいのかということと、
PHPはソート関数が充実してるようですが
どれが一番シンプルに処理できる関数なのかというお考えをお聞かせいただけるとありがたいです。
>>417
出来ればcsvの受け取りからソートまでを自動化したいと思ってるので。。。
>>418
usortというのも目に付いたのですが、本件についてはarray_multisortが良いというご回答とお見受けしますが、
具体的にどんなコーディングをすればよいか教えていただけると助かります。
・・・ネットのリファレンスで見たんですが、私の浅い知識ではまだ理解するに至らず・・・せっかくのご回答に申し訳ございません。
0423nobodyさん
2008/08/03(日) 17:54:35ID:???うん、そういうこと。
俺、PHP詳しくないんだ、ごめんw
0425nobodyさん
2008/08/03(日) 18:46:12ID:RMhtfFUN0426nobodyさん
2008/08/03(日) 18:47:13ID:???0427nobodyさん
2008/08/03(日) 18:48:58ID:RMhtfFUN0428nobodyさん
2008/08/03(日) 19:22:24ID:rj+Na7p9文字化けがするので下記のコードにmb_convert_encodingを付け足したいのですが
どのように書いてあげればいいのでしょうか?
アドバイスお願いします。(馬鹿すぎる自分が嫌になる)
<?php
echo file_get_contents('http://●●●');
?>
mb_convert_encoding($str, "UTF-8", "auto");
0429nobodyさん
2008/08/03(日) 19:24:01ID:???0430nobodyさん
2008/08/03(日) 19:30:40ID:???0431nobodyさん
2008/08/03(日) 19:31:07ID:???暇つぶしに作ってみたお
array_multisort()じゃなくてusort()つかったお
<pre>
<?php
// 比較関数
function compare($a, $b) {
global $ken_code;
$address_a = $a[1];
$address_b = $b[1];
$ken_a = get_ken($address_a);
$ken_b = get_ken($address_b);
$order_a = array_search($ken_a, $ken_code);
$order_b = array_search($ken_b, $ken_code);
if ($order_a > $order_b) {
return 1;
} else if ($order_a < $order_b) {
return -1;
} else {
return strcmp($address_a, $address_b);
}
}
// 住所から都道府県名を取り出す
function get_ken($address) {
if (preg_match('/^(.+?(?:都|道|府|県))/', $address, $m)) {
return $m[1];
}
}
0432431
2008/08/03(日) 19:32:00ID:???// bus_data.csv読み込み
$bus_data = array();
if (($f = fopen('bus_data.csv', 'r')) !== false) {
while ($row = fgetcsv($f)) {
$bus_data[] = $row;
}
fclose($f);
}
// print_r($bus_data);
// ken_code.csv読み込み
$ken_code = file('ken_code.csv');
$ken_code = array_map('rtrim', $ken_code);
// print_r($ken_code);
usort($bus_data, 'compare');
print_r($bus_data);
0433431
2008/08/03(日) 19:37:05ID:???コード中の全角スペースは半角スペースに置換してね
0434nobodyさん
2008/08/03(日) 19:51:02ID:???<?php
echo mb_convert_encoding(file_get_contents('http://●●●'), "UTF-8", "auto");
?>
0435nobodyさん
2008/08/03(日) 20:02:41ID:rj+Na7p9神様有難うございます!
助かりました
0436nobodyさん
2008/08/03(日) 20:04:37ID:???0437nobodyさん
2008/08/03(日) 22:39:25ID:???0438nobodyさん
2008/08/04(月) 00:13:33ID:7EUTIW4hマジックメソッドのような働きをしますが、こういったものは他にもあるのでしょうか?
まとまった情報を知っていましたら教えてください。
0439nobodyさん
2008/08/04(月) 00:21:07ID:???0440nobodyさん
2008/08/04(月) 01:49:48ID:ePD1nbCV誰か俺みたいな馬鹿でも分かるように書いてあるサイト知らないですか?
0441nobodyさん
2008/08/04(月) 01:54:22ID:???http://www.php.net/manual/ja/install.php
0442nobodyさん
2008/08/04(月) 02:38:54ID:LmctVFYq0443nobodyさん
2008/08/04(月) 02:40:58ID:LmctVFYqなにがわからないんだい?
そのかわりけつ毛はないものとおもえ
0444440
2008/08/04(月) 02:43:03ID:ePD1nbCVダウンロードしたあとの設定です
httpdをメモ帳で変えるところが多分違うのかと思います
0445nobodyさん
2008/08/04(月) 02:45:51ID:LmctVFYqwindowsか。
ちゃんとphp.iniの設定とかしたのか?
httpdconfの設定は?
なんか情報が少なすぎてわけわからんよ
0446nobodyさん
2008/08/04(月) 02:48:49ID:???:. / _ ___ 、\
/ / i \ \\ :.
:. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ
,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
:. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
|i .i l :N_, -弋 \弌弋ナ:}:.:}
:. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な…
.| :メヽ.', `ozZ} izN。ハ::{ なんでですか?
:. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :.
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんでPHPの設定
ができないんですか?
:. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:.
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
:. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:.
/ / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ',
./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ',
{ /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ
ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧|
ヽ! )人 : : :人 : : : / \! :.
" ヽ : : : : :/イ{ :.ノ: : : :.\ :.
:. \__///: :\______/: : : : : : : ヽ
/ //: : :|;|: : : : : : i: : : __: : : : ',
:. / 、 {;{ |;| . : i/. : : : : : :|
0447nobodyさん
2008/08/04(月) 02:51:18ID:ePD1nbCV一応PHP Laboの通りにやりました
PHPは新しいのをダウンロードしました
iniの設定はフォルダを作ったり メモ帳でいじりました
httpdconfはたくさんいじってなにがどうなったのかわからない状況です
0448nobodyさん
2008/08/04(月) 02:56:27ID:???外部にポート開いてなければセキュ的にも問題はない
自分で解決できないようなやつは難しいことをしては駄目だ
0449440
2008/08/04(月) 02:59:04ID:tFXIqt4S昨日XAMPPをやっていたら違うスレで
一個ずつやった方が楽って言われて…
最終的にはPHPを公開したいですが…とりあえず勉強がしたいです
0450nobodyさん
2008/08/04(月) 03:14:05ID:???>一個ずつやった方が楽って言われて…
サーバソフトに熟知してるやつでもどっちが楽かといわれたらXAMPPだ
なぜなら必要なパッケージは一通り入ってるし特別設定しなくてもすぐ使える
サーバ設定など細かなカスタマイズが必要になるのは
サーバを外部に公開したりセキュリティが絡んでくる場合のみ
PHPを開発するだけならXAMPPでいい
>最終的にはPHPを公開したいですが…
作ったスクリプトをレンタルサーバで使ったり公開したいってことでしょ?
上でいってるのは自分のパソコンをサーバとして公開する(自宅サーバ)っていうことだから別の話ね
■ このスレッドは過去ログ倉庫に格納されています