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

【PHP】ID出さなくても質問OKなスレ【初心者歓迎】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/02/03(火) 01:09:36ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
0066nobodyさん2009/03/23(月) 15:23:21ID:???
お前は何を言ってるんだ
0067nobodyさん2009/03/23(月) 18:00:02ID:???
正規表現を覚えたてで何でも使いたい頃なんだよ多めに見てやれや
0068nobodyさん2009/03/23(月) 18:18:00ID:???
正規表現が理解できないゆとりが正規表現潰しに必死です
三項演算子が理解できないゆとりが(ry
できれば何でもいいんだよ
ちなみに俺は>>61じゃない
0069nobodyさん2009/03/23(月) 18:19:16ID:???
どっちが効率がいいのか明確なのに一名必死ですねw
0070nobodyさん2009/03/23(月) 18:23:25ID:???
どこがどう何が効率がいいの?
コードの短さだけを見て判断してるの?
0071nobodyさん2009/03/23(月) 18:23:42ID:???
ほんとだよなdateにフォーマット渡せば済むのにわざわざ正規表現使う意味がわからない
0072nobodyさん2009/03/23(月) 18:29:23ID:???
コーディングスタイルは人それぞれだろ
意味がわからないってwww
0073nobodyさん2009/03/23(月) 18:30:34ID:???
それコーディングスタイルとは言わないだろ
0074nobodyさん2009/03/23(月) 18:34:02ID:???
批判してるやつは自分が完璧だとでも言いたいのか?
本当に他人のコードを批判できるのは
言語開発側にいるハッカーや学者等一握りしかいない
全てのコードをアセンブラレベルで完璧に効率よく組むことができない限り
たかだか一部分の話題をとって他人を批判するもんじゃない
自分のコードがいかに効率的か完璧か自信があるか?
0075nobodyさん2009/03/23(月) 18:43:54ID:???
少なくとも正規表現よりは効率的だわ
0076nobodyさん2009/03/23(月) 18:51:40ID:???
んじゃ、そろそろどなたかベンチマークで決着つけてください。
0077nobodyさん2009/03/23(月) 18:54:52ID:???
あ〜あ正規表現クンが荒れてきたよwwwwwwwwwwwwww
0078nobodyさん2009/03/23(月) 19:01:15ID:???
頭の悪いやつばっかだな
0079nobodyさん2009/03/23(月) 19:05:23ID:???
>>53は正規表現が好きなんだから使えばいいんじゃないの
フォーマット変更するとき一々何か所も変更するのが苦にならないんだから
0080nobodyさん2009/03/23(月) 21:10:05ID:???
date_default_timezone_set('Asia/Tokyo');

$time[1]['start'] = microtime(true);
for($i=0;$i<10000;$i++) {
date("Y-m-d H:i:s",(strtotime("2009-04-01 08:40:00") + 1800));
}
$time[1]['end'] = microtime(true);


$time[0]['start'] = microtime(true);
for($i=0;$i<10000;$i++) {
$date= '2009-04-01 08:40:00';
preg_match("/(\d{4})\D(\d\d?)\D(\d\d?)\s+(\d\d?):(\d\d?):(\d\d?)/s", $date, $d);
$d= localtime(60*30+mktime($d[4], $d[5], $d[6], $d[2], $d[3], $d[1]));
printf("%d-%02d-%02d %02d:%02d:%02d", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]);
}
$time[0]['end'] = microtime(true);



echo "<p>結果</p>";
$time[0]['kekka'] = $time[0]['end'] - $time[0]['start'];
$time[1]['kekka'] = $time[1]['end'] - $time[1]['start'];
echo "<pre>";
print_r($time);
echo "</pre>";
0081nobodyさん2009/03/23(月) 21:11:09ID:???
正規表現くんは黙ってろ
0082nobodyさん2009/03/23(月) 21:45:57ID:???
ただの検証コードを貼り付けてるだけなのに
少しでも難しそうなことが書いてるとこれだもんな
ほんと憐れだよ
理解できないほうこそ黙ってるべきだろ
0083nobodyさん2009/03/23(月) 22:00:50ID:???
お前この程度が限界なのか
0084nobodyさん2009/03/23(月) 22:11:55ID:???
正規表現使うのがかっこいいとかそういうノリだろ
そもそも質問に出てくるような用途で正規表現を使うことが勿体ない
0085nobodyさん2009/03/23(月) 22:12:46ID:???
>>82が質問の意図を理解してない証拠
0086nobodyさん2009/03/23(月) 22:45:24ID:???
すみません教えて頂きたい事があるのですが
php 5.1.4.4
apache 2.0.58.200で
basic認証が必要なページに対してsetcookieでID/PASSをセットして
認証済みにして表示させています。
ですが認証済みのページからword/excelのファイルリンクをクリックすると
なぜか認証のダイアログが表示されます。
jpegやpdf等に関しては認証が通っているページからのリンククリックなので
そのまま表示できますが、word/excelのファイルに関してだけが認証ダイアログが
表示されてしまいます、しかもキャンセルするとファイルの中身が表示できてしまいます。
word/excel/jpeg/pdfは全て同じbasic認証が必要なフォルダに入れております。
URL直叩きの場合は全てのファイルで認証画面が表示されます。
なぜjpeg/pdfはOKでword/excelがNGなのかがよく分かりません。
よろしくお願いします。
0087nobodyさん2009/03/24(火) 08:59:12ID:???
ここまで言われると昨日の荒らしも恥ずかしくてでてこれないべや
0088nobodyさん2009/03/24(火) 09:04:56ID:???
>>87
自覚してるならこないでよ
0089nobodyさん2009/03/24(火) 09:19:52ID:???
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   細けぇ事はいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
0090nobodyさん2009/03/24(火) 11:32:15ID:???
普通に聞きたいんですけど
$date= '2009-04-01 08:40:00';
preg_match("/(\d{4})\D(\d\d?)\D(\d\d?)\s+(\d\d?):(\d\d?):(\d\d?)/s", $date, $d);
$d= localtime(60*30+mktime($d[4], $d[5], $d[6], $d[2], $d[3], $d[1]));
printf("%d-%02d-%02d %02d:%02d:%02d", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]);

これの利点ってなんですか?
0091nobodyさん2009/03/24(火) 11:39:05ID:???
$date= <<<EOT
2009-04-01
08:40:00
EOT;

目的のデータが↑みたいな厄介なフォーマットだった場合、ちょこちょこ改変して使えるってことじゃね?
0092nobodyさん2009/03/24(火) 12:34:03ID:???
>>91
改行含んでるだけでどこが厄介なんだよ??
改行含んでても正規表現は使わなくてもできるよ?


改行を含ませて出力したいなら
echo date("Y-m-d\tH:i:s",(strtotime("2009-04-01 08:40:00") + 1800));
0093nobodyさん2009/03/24(火) 12:36:33ID:???
↑の\tは\nの書き間違いね


改行を含んだ日付を使う場合
$t = "2009-04-01

08:40:00";

echo date("Y-m-dH:i:s",(strtotime($t) + 1800));


改行を含んだ日付を使い、出力も改行させる場合
$t = "2009-04-01

08:40:00";

echo date("Y-m-d\nH:i:s",(strtotime($t) + 1800));
0094nobodyさん2009/03/24(火) 12:40:16ID:???
あんまり正規表現さんをいじめるなよw
顔真っ赤にして荒らされるぞw
0095nobodyさん2009/03/24(火) 12:48:47ID:???
荒らしてるのはお前だけだろ・・・
どっか逝けよ
0096nobodyさん2009/03/24(火) 12:51:16ID:???
>>90
正規表現にはこうやって性格の悪いやつを引き寄せるパワーがある
0097nobodyさん2009/03/24(火) 13:42:14ID:???
そもそも正規表現を使うことでもないのに使ってるからちょっと言われてたんだろ
もういいよ
0098nobodyさん2009/03/24(火) 15:35:31ID:???
悪かったな俺の質問でこんなんになって。
ところで質問なんですけど、
$arr = array("りんご", "みかん", "ブドウ", "", "スイカ");
$arr = str_replace("", "パイナップル", $arr);
print_r($arr);
希望の値を出力しません。
空の値に文字列を置換する方法教えてください。
0099nobodyさん2009/03/24(火) 15:41:10ID:???
つまりこういうことか
「こんにちは」を出力するのにこんなことするってことか

$array = array("あ",・・・"ん");//あ〜んを配列に格納
$hello = $array[9].$array[46],$array[21],$array[16],$array[25];
printf("[%s]\n",$hello);
0100982009/03/24(火) 15:45:53ID:???
>>99?
出力結果でパイナップルが入りません。
Array ( [0] => りんご [1] => みかん [2] => ブドウ [3] => [4] => スイカ )
0101nobodyさん2009/03/24(火) 16:01:28ID:???
a、すまん99は>>97にね
0102nobodyさん2009/03/24(火) 16:03:27ID:???
>>98
ついでに答えとくと希望の値って何なのか書かないとエスパー回答待ちになりますよ
0103982009/03/24(火) 16:11:26ID:???
理想は
[3] => パイナップルです。
Array ( [0] => りんご [1] => みかん [2] => ブドウ [3] => [4] => スイカ )
0104nobodyさん2009/03/24(火) 16:17:56ID:???
空文字は引っかかりません
0105nobodyさん2009/03/24(火) 16:19:22ID:???
preg_replaceを使用してこう書けばできる
$s = "/^$/";
$r = "パイナップル";
$a = array("りんご","みかん","ブドウ","","スイカ");

$kekka = preg_replace($s,$r,$a);
print_r($kekka);
0106982009/03/24(火) 16:43:15ID:???
なるほど確認してみます。
ありがとうございます。
0107nobodyさん2009/03/24(火) 18:57:54ID:???
>>90
日付が/区切りでも、扱えるようにしてるんじゃないの。
0108nobodyさん2009/03/24(火) 19:14:04ID:???
自分で書いてみたけど正規表現でなくてもいいみたい
う〜ん、やっぱ標準関数で用意されてるものを使ったほうが開発効率も保守性も速度もいいみたいですね
$dt[0] = "2009-04-01 08:40:00";
$dt[1] = "2009/04/01 08:40:00";

function date($d) {
return date("Y-m-d H:i:s",strtotime($d));
}

echo "<p>".date($dt[0])."</p>";
echo "<p>".date($dt[1])."</p>";
0109nobodyさん2009/03/24(火) 19:27:48ID:???
正規表現覚えたてのプログラミング初心者相手にみんなパネェっすねw
プログラミング歴が上がればどういうときにどんなコード書けばいいのか分かるようになるんだからそっとしてやろうぜw
0110nobodyさん2009/03/24(火) 20:10:52ID:???
習得度が高かろうと低かろうとどうでもいいが
初心者なのに人の意見に耳を傾けないで根拠も無く自分が正しいと思ってるからだめなんだろ
0111nobodyさん2009/03/24(火) 20:16:04ID:???
煽ってる阿呆は1人なんだからもう放置しようぜ・・・
0112nobodyさん2009/03/24(火) 20:18:24ID:???
1人ってどれ?
0113nobodyさん2009/03/24(火) 20:20:17ID:???
自覚がないんですね
0114nobodyさん2009/03/24(火) 21:02:38ID:???
90のコードに嫉妬
0115982009/03/25(水) 09:31:58ID:???
90のコード
dばっかとか意味わかんないし。
イミプーでうすぁ。
0116nobodyさん2009/03/25(水) 10:04:26ID:???
あえて言いたい
>>90のコードはネタだろ
つられてんじゃねえよw
0117nobodyさん2009/03/27(金) 04:02:52ID:???
未定義のプロパティーはnullですが
これは規定と考えていいのでしょうか?
0118nobodyさん2009/03/27(金) 04:16:33ID:Xi9/JJ4U
DBなどすべてUTF-8で構築しております。
そのうえで、xmlWriter()をつかって「EUC-JP」で
XMLを書き出したいのですがどうしたらよいのでしょうか?
単にstartDocumentでEUC-JPを指定するだけでエンコードを変更できるのでしょうか?
Firefoxでは表示され、safariだとエラーになってしまいます。

$writer = new xmlWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'EUC-JP');
$writer->startElement('root');
(略)
$writer->endElement();
$writer->endDocument();
return simplexml_load_string($writer->outputMemory(TRUE));

ちなみに各Directiveの値もメモしておきます。
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding UTF-8
mbstring.script_encoding no value
0119nobodyさん2009/03/29(日) 00:44:35ID:???
ライブラリとかクラスファイルとか、
他のファイルを読み込むときは可読性からスクリプトの最初で読み込みたいんだけど、
ある条件下でしか使わないようなファイルをスクリプトの途中で読み込みたいときはどうしてる?
0120nobodyさん2009/03/29(日) 00:55:11ID:???
スクリプトの途中で読み込む
0121nobodyさん2009/03/29(日) 04:16:40ID:0MM+niTd
118について、気になっているオレガイル。
0122nobodyさん2009/03/29(日) 13:45:03ID:???
テーブル設計とかわけがわかりません。
楽天・DMMなどを見ても全くその構造がわかりません
どうしたら こういう構造について強くなれるでしょうか
おすすめの書籍やページなどあればお願いします
php中級者です
0123nobodyさん2009/03/29(日) 13:48:49ID:???
つ教科書
01241222009/03/29(日) 13:51:43ID:???
>>123
どの教科書ですか?
教えて下さい。当方PHPしかやったことないですが
アルゴリムズなど こういうWEBのアルゴリズムについて
良い本とかページ無いですか
0125nobodyさん2009/03/29(日) 14:14:14ID:???
調べろよ
01261222009/03/29(日) 14:19:21ID:???
わからないんです 早くして
0127nobodyさん2009/03/29(日) 14:19:46ID:???
調べろよ
01281222009/03/29(日) 14:21:20ID:???
早くしてください
0129nobodyさん2009/03/31(火) 11:33:31ID:???
正規表現くんがいま調べてるから黙って待ってろ
0130nobodyさん2009/04/03(金) 15:49:42ID:???
$_login->authorize(); だけでどうして ユーザ認証ができるんですか?
0131nobodyさん2009/04/03(金) 15:52:26ID:???
authorizeメソッドにユーザ認証機能が実装されてるからだろ
0132nobodyさん2009/04/03(金) 18:35:49ID:???
authorizeメソッドって何?
ぐぐってもわからない
0133nobodyさん2009/04/03(金) 19:00:10ID:???
public function authorizeで定義したメソッド
0134nobodyさん2009/04/03(金) 19:29:21ID:???
ん、その定義しましたってのはどこのファイル見たらわかるの?
0135nobodyさん2009/04/03(金) 19:37:04ID:???
PHPマニュアルでauthorizeで検索しても出てこない・・
0136nobodyさん2009/04/03(金) 19:49:54ID:???
ないもんは出てこない仕様です
0137nobodyさん2009/04/03(金) 19:52:46ID:???
$_login->authorize();
これ 変数_login > authorize(); に見えるんだよな
0138nobodyさん2009/04/03(金) 19:54:20ID:???
あぁそうか ユーザー定義関数だからないのかな
ただこのフォルダのスクリプトの中にどこにも
function authorize() {
  処理に必要なプログラム
  }
がないんだよね
0139nobodyさん2009/04/03(金) 20:04:13ID:???
あるよ
関数じゃなくてメソッドだけどね
0140nobodyさん2009/04/03(金) 20:42:39ID:???
おおお さらに深くgrepしたら出てきた

$_login->authorize(); // ユーザ認証

ん、これって自動的にauthorizeメソッド検索してできるんだ〜
0141nobodyさん2009/04/03(金) 20:43:38ID:???
どんだけ浅くgrepしてんだYO
0142nobodyさん2009/04/03(金) 20:45:13ID:???
いやそれ定義じゃなくて実行じゃん
0143nobodyさん2009/04/03(金) 21:15:32ID:???
$_login->が何を表してるかがわからない
authorize(); はpublic function authorize(){}を探しそこにフォーカスを動かすって事かな
0144nobodyさん2009/04/03(金) 21:58:00ID:???
全然ちゃうわ
0145nobodyさん2009/04/03(金) 22:14:41ID:???
せめてググッタラわかるようなキーワードを教えてくれ
0146nobodyさん2009/04/03(金) 22:21:35ID:???
つ公式マニュアル
0147nobodyさん2009/04/03(金) 22:53:39ID:???
そろそろ俺に答えられそうな質問を出してくれないかな
0148nobodyさん2009/04/04(土) 00:13:38ID:???
そうなんだ・・・すまん
0149nobodyさん2009/04/04(土) 00:14:31ID:???
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1124846266
知恵袋で質問してみた
0150nobodyさん2009/04/04(土) 08:28:29ID:???
質問です。

CentOS5.2 + Apache 2.2.3 + PHP5.1.6という環境で
趣味のホームページ作りをしています。

ドキュメントルート /var/www/html/ 直下にPHPフレームワーク(CakePHP)を
インストールするとウェルカムページ(スタートページ)も問題なく表示されますが、

Virtualhost 機能を使用し、/var/www/html/TEST/ をバーチャルホスト
のドキュメントルートしてウェルカムページを表示すると、なぜかエラーが出ます。
エラーの内容
Warning: touch() [function.touch]: Utime failed: Operation not permitted in /var/www/html/TEST/cake/libs/file.php on line 130

いろいろ調べるとパーミッションがらみの問題であるとのことなので、
chmod -R 777 /var なんていう無茶なことをやってみましたが、それでも
改善しません。

ちなみに、上記の問題はWindows上のxamppで同様のVirtualhostを設定した場合は
再現しません。

何かご存知の方はいらっしゃいませんでしょうか?
0151nobodyさん2009/04/04(土) 08:34:47ID:???
ご存知だったけど忘れたな
なんかカラクリがあったのは確かだ
0152nobodyさん2009/04/05(日) 14:20:07ID:???
>>53

亀レスだがこれをよく読んどきなさい

---------------------------------------------------------------------
最近のスクリプト言語は機能が多く、基本的な機能はほとんど実装されているので、
アルゴリズムをどうこうするより、どの機能を使うか選ぶ方が重要だったりしますね(コーディングの効率的にも)。
---------------------------------------------------------------------

引用:http://ifs.seesaa.net/article/26300967.html
0153nobodyさん2009/04/05(日) 21:10:32ID:Z8UCv2WT
質問です。
UTC時間で計算したいのですが、
strtotimeやlocaltimeを使うと勝手に日本時間を参照したような値が
返ってきます。UTCのままで計算する方法教えてください。
0154nobodyさん2009/04/05(日) 21:15:40ID:???
localtimeで日本時間が返るなら勝手に変えてるわけじゃないと思うが
0155nobodyさん2009/04/06(月) 04:35:26ID:???
>>152
アフィリエイト目的のただの糞サイト
0156nobodyさん2009/04/06(月) 10:40:36ID:???
>>155=正規表現クン
0157nobodyさん2009/04/06(月) 11:46:40ID:SCbGgs9l
OS:CentOS / PHP:5.1.6 / DB:PostgreSQL
質問:
現在のところテスト環境のためパスワードはrootのみしか設定していないためPHPでは
host=localhost dbname=sampletabl この2つしか指定しておりません。
コードは下記のものになります。
$conn = "host=localhost dbname=sampletable";
$link = pg_connect($conn);
if (!$link) {
die('接続失敗です。'.pg_last_error());
}
print('接続に成功しました。<br>');

パスワード等は必ず設定しなければならないのでしょうか?
繋がらない理由などがよくわからないのでそういった事を解説してあるサイトなどあれば教えて頂ければと思います。
0158nobodyさん2009/04/06(月) 11:50:14ID:???
ユーザ名とパスワード入れろよ
01591572009/04/06(月) 12:06:33ID:SCbGgs9l
この場合のユーザとパスはPostgreSQLの方ではユーザーの作成も何もしていないので
ユーザーとして存在しているrootもしくはpostgresのどちらかってことになるかと思います。
postgresの方もパスワードは設定しておりませんので
user=postgres のみか user=root password=**** になると思うのですが
一応両方試してみてうまくいきませんでした。
postgresのユーザー及びパスワードの設定は必須ということでしょうか?
0160nobodyさん2009/04/06(月) 12:30:48ID:???
テスト環境って自鯖でしょ?
どうやってsampletable領域を作成したの?
sampletableが作成できてるならcreate userでユーザ作成できると思うけど
01611572009/04/06(月) 12:51:29ID:SCbGgs9l
>>160
createuserは使用しておりません。
手順としては
 su - postgresでアクセス
 psql postgres でDBに接続
 CREATE TABLE sampletableでテーブル作成
 insert into sampletable でデータが入る事を確認
このようにしてテーブルを作成しました。ですのでcreate user等は使用せずに
テーブルを作成した形になります。
0162nobodyさん2009/04/06(月) 12:57:00ID:???
それじゃあsampletableはdbnameじゃなくテーブル名じゃん
dbnameってデータベース領域だよ?
01631572009/04/06(月) 13:59:50ID:SCbGgs9l
>>162
すいません。回答ありがとうございます。
何か大きな勘違いをしているようです。
下記を確認しました。
-bash-3.2$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
で表示されているNameの部分がdbnameってことになるわけですよね?
ですので
host=localhost dbname=template0 user=postgres
という事になるのでしょうか。これでもうまくいきませんでしたので私の方で何か根本的に間違っていると思うのですが…
01641572009/04/06(月) 14:08:45ID:SCbGgs9l
すいません自己解決しました。
pg_hba.confを設定したヤツが設定ミスってました。
スレ汚し本当に申し訳ないです。
0165nobodyさん2009/04/06(月) 14:22:08ID:???
自宅サーバを立ててた時は、Linux(CentOS)
使ってたんだけど、実際にサーバを借りてPHPで作ったサイトを維持
する事を考えると断然Windowsの方が便利に感じたので
Windows上でPHPスクリプトを書いてたりするんだけど、
皆さんはどちらで作業してますか?

※どう考えてもLinuxよりも便利なツールがWindowsの方が多く出ている
から生産性も高いと思うんだけど。
0166153 2009/04/06(月) 15:02:21ID:krIGQs5h
>>153
まだ??
教えてほしいです。
■ このスレッドは過去ログ倉庫に格納されています