【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カテゴリ)の各スレで
0321nobodyさん
2008/07/30(水) 15:40:06ID:???0322nobodyさん
2008/07/30(水) 15:53:22ID:???0323nobodyさん
2008/07/30(水) 20:17:13ID:???0324nobodyさん
2008/07/30(水) 22:38:29ID:???おれがマヌアルを見る。
0325nobodyさん
2008/07/30(水) 23:04:59ID:l8kbvEzZありそうなので探したのですが、見つかりませんでした。
for文で一文字ずつ数えるしかないでしょうか。
たとえば、「東京都中央区東銀座」なら、「東」で検索すると二文字あるというようなイメージです。
どうか宜しくお願いします。
0327nobodyさん
2008/07/30(水) 23:16:48ID:l8kbvEzZありがとうございした!!!
見落としてました。感謝感謝です。
0328nobodyさん
2008/07/31(木) 01:04:47ID:???↓
400件あった場合 20件だけ表示
↓
次へ クエリを使う
↓
?page=2へ行く
何も表示されない。。。 もうわけわかりません><
0329nobodyさん
2008/07/31(木) 01:25:14ID:???0331nobodyさん
2008/07/31(木) 07:02:15ID:Dk1YGUwiphp.iniの設定はしたのですが、
〜.dllがloadできないと怒られます
〜.dllを探してみたところ見つからないので、
たぶんこれが原因だと思うのですが、どうすればよいか分かりません
どなたかアドバイスいただけないでしょうか
0332nobodyさん
2008/07/31(木) 07:08:33ID:???0333nobodyさん
2008/07/31(木) 09:29:30ID:DMpgDcRT22文字の暗号された英数字が見つかりました
何か気になって仕方ありません
昔暗号化した記憶はあるのですが、その後は不明です
どのようなソフトで暗号されたかわかりますでしょうか?
手がかりは全て22文字という事だけです
0335nobodyさん
2008/07/31(木) 10:30:14ID:X6YvYw8a関数で呼び出した変数の値を保持させたい場合であれば、定数でやってもいいように理解してるんですが
どうかよろしくお願いします
0336nobodyさん
2008/07/31(木) 10:39:35ID:???0337nobodyさん
2008/07/31(木) 10:41:25ID:???初心者に分かりやすく書くと、
・定数:一度定義したらプログラム実行中は書き換えられない
・変数:実行中に何度でも変更可能
あとは使い方次第。どうぞ。
0338nobodyさん
2008/07/31(木) 10:42:23ID:???勘違いしてるみたいだから、ググってその二つの説明をよく読んだほうがいい
ここで説明されるよりわかりやすいところがいくつも見つかるよ。
0339nobodyさん
2008/07/31(木) 10:46:57ID:???0340nobodyさん
2008/07/31(木) 11:07:13ID:???どのような勉強方が効率的で頭に入るのか教えてください。
0341nobodyさん
2008/07/31(木) 11:10:40ID:???0343nobodyさん
2008/07/31(木) 11:24:09ID:???名前・本文をフォームで投稿し、それが表示される流れまでを作成してみる。
次に文章の色が変更出来る様にとか、削除パスで書き込みを削除出来る様にするとか、
過去ログを見られる様にとか、二重投稿を禁止するとか、
付加機能をどんどん付けていく。
そうやって慣れていったな俺は。
0344335
2008/07/31(木) 11:26:12ID:???一応、マニュアルと大垣靖男さんのはじめてのPHP言語プログラミング入門は読んでみました
>>337
スタティック変数を使う目的は変数の値を保持させたい、つまり変数の値ときですよね
その場合だと定数でもいいんじゃないかと
んんん、ユーザからの入力を受けとって値を維持させたい場合とかで使えますね
できればよく使われる場合、場面を教えていただけないでしょうか
0345335
2008/07/31(木) 11:28:05ID:???消し忘れました・・・・・・
連投スイマセン・・・
0346nobodyさん
2008/07/31(木) 11:36:11ID:???0348335
2008/07/31(木) 13:08:54ID:???変数:常時変更可能
スタティック変数:?
定数:値設定後は常時変更不可
んースタティック変数は、定数でも変数でも代役可能な感じですか?
0349335
2008/07/31(木) 13:19:47ID:???<?php
function test(){
$a = 0;
$a = $a + 1;
echo $a;
echo "<br />";
}
function test2(){
static $a = 0;
$a = $a + 1;
echo $a;
echo "<br />";
}
test();
test();
test();
echo "<hr />";
test2();
test2();
test2();
?>
再帰関数の使いどころは?と聞きたいところですがまた今度にしますw
0350nobodyさん
2008/07/31(木) 15:30:24ID:???「スタティック関数」と連呼していたのがバカな事なのに気づければ良し。
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;
(以下略)
大体このような感じなのです。
どちらの関数も同じフォルダにあるので、ファイル名の参照エラーは考えられません。
ヒントか何かないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています