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

【PHP】下らねぇ質問はここに書き込みやがれ 45

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/27(金) 10:02:42ID:H9gF1SfB
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 44
http://pc11.2ch.net/test/read.cgi/php/1176364487/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0243nobodyさん2007/05/02(水) 02:45:14ID:???
>>235
その例の場合インスタンスの生成なんかより
DBとの会話のほうがロスが大きそうなので
ストアドプロシージャ使ったほうがいんじゃね

あとなんとなくだが
リファクタリングの本を一通り読んでみることをオススメする
0244nobodyさん2007/05/02(水) 02:46:04ID:???
>>242
Em or Eclipce
0245nobodyさん2007/05/02(水) 02:55:47ID:???
<TAG>
TEST
</TAG>

タグの間の文字列(上の場合TEST)を抜き出したいのですが、
どういった関数を利用するのがベターでしょうか?
0246nobodyさん2007/05/02(水) 02:57:06ID:???
preg_match
0247nobodyさん2007/05/02(水) 03:03:38ID:???
>>242
DWのほうが使いやすいよ。htmlとも連携してるから補完機能も色分けもDWじゃないとだめな俺様
02482452007/05/02(水) 03:44:54ID:???
>>246
具体的に教えて栗
正規表現苦手ニダ
0249nobodyさん2007/05/02(水) 03:54:38ID:???
preg_match("!<TAG>(.+?)</TAG>!");
0250nobodyさん2007/05/02(水) 03:54:43ID:???
preg_match("/<TAG>((?:(?!<\/TAG>).)*?)<\/TAG>/", $html, $return);
0251nobodyさん2007/05/02(水) 03:56:48ID:???
>>248
preg_matchが正規表現って分かってるなら
大丈夫じゃないか
後は頑張って覚えるだけぽ
0252nobodyさん2007/05/02(水) 04:00:30ID:???
>>249-250
で、どっちが正しいの?
0253nobodyさん2007/05/02(水) 04:01:44ID:???
「!」って何だっけ
0254nobodyさん2007/05/02(水) 04:04:41ID:???
えくすくらめーしょんまーく
02552452007/05/02(水) 04:14:02ID:???
(.+?)
これで改行も認識されますか?
0256nobodyさん2007/05/02(水) 04:16:28ID:???
>>255
ヒント:s
02572452007/05/02(水) 04:18:39ID:???
どなたか250の内容を具体的に解説してくれないでしょうかニダ?
意味的には、
((?:(?!<\/TAG>).)*?)
が</TAG>以外、
という感じなのはなんとなくわかりますが、
(が2個続いていたり:や?の役目がよくわからんです。

>>251
正規表現の本5冊ほど持ってますが、
さっぱりです。初めて英語を勉強したとき以上のカルチャーショックです、
呪文です、あれは。
0258nobodyさん2007/05/02(水) 04:19:39ID:???
>>250
最短マッチしてるなら?!はいらないんじゃね?
0259nobodyさん2007/05/02(水) 04:20:34ID:???
マニュアル嫁
?:は後方参照しない
?!は否定
()はグループ化して後方参照
02602452007/05/02(水) 04:20:42ID:???
>>256
なるほど〜
s修飾子というやつですね、
そのヒントからかなり得るものができた気がします、
ありがとうございます。
0261nobodyさん2007/05/02(水) 04:27:00ID:???
>>257
オライリーの「詳説正規表現」以外は要らない。
1,2,3章の入門編を軽く流したら、4,5章を徹底的に理解すべし。
02622452007/05/02(水) 04:31:02ID:???
レスありがとうございます、
(?!<\/TAG>) はわかりました
((?:(?!<\/TAG>).)*?) の *?は最短マッチですよね。
?:と(?!<\/TAG>)の後ろのドットの役割が説明聞いてもいまいちわからんですね。。。。

preg_match("/<TAG>(.*)*?<\/TAG>/", $html, $return);
↑これではダメでしょうか?

0263nobodyさん2007/05/02(水) 04:35:15ID:???
質問者はID消すなよ、常識的に考えて
0264nobodyさん2007/05/02(水) 04:36:18ID:???
ドットが分からないとか正規表現のリファレンス1行も読んでないだろ、常識的に考えて
0265nobodyさん2007/05/02(水) 05:54:44ID:???
>>259
(?!hoge)は前方参照否定じゃなかたけ、否定とはちょい違う

>>262
(?!<\/TAG>)(.*?)
て書きたかったんじゃね

>>264
どうしてそこにドットが出るのかがわからない、と聞いているんだろ
常識的に考えて
0266nobodyさん2007/05/02(水) 06:23:43ID:???
文字通りの意味と役割だろ
そんなことも分からないってことは修飾子と構文を正しく理解してないってこと。
その2つは最低限理解してから実例に入るべき。
人に教えてもらってコピーするとか改良するとかはその後。
02672082007/05/02(水) 06:50:57ID:???
>>221
Webの方はJISですが、DBはEUC-JPです。
どのようにすればよいでしょうか?
お願いします。
02682082007/05/02(水) 07:44:06ID:e82GvhiD
すみません、DB側はUTF-8でした。
0269nobodyさん2007/05/02(水) 08:08:14ID:???
方法はあるけど分かるように説明するの面倒だから全部UTF-8にすれ
0270nobodyさん2007/05/02(水) 08:46:10ID:UK9OmFrQ
質問です
GETmethodで情報をphpに受け渡した時、受け側のphpでは以下の通りになりました
storeCart.php?num1=45&code1=1&num2=0&code2=2&num3=0&code3=3&num4=0&code4=4

で、このstoreCart.phpに
if($_get['code1']=""){
echo "karadayo";
}else{
echo "「".$_get['code1']."」";
}
と書いたんですが、何も表示されません なぜでしょう?
0271nobodyさん2007/05/02(水) 08:47:05ID:???
$_GET['code1']
0272nobodyさん2007/05/02(水) 08:51:03ID:UK9OmFrQ
>>271
すみません、書き間違いがありました
「」 と表示されました(270の時点で)
271さんの言うとおりにしても、「」のまま変わりません
なぜ??
0273nobodyさん2007/05/02(水) 08:55:03ID:jXkSXyAx
$_GET['code1']=""
だからじゃね
0274nobodyさん2007/05/02(水) 08:56:00ID:???
$hoge = "「"."
0275nobodyさん2007/05/02(水) 09:02:39ID:UK9OmFrQ
>>273
それでした! ハズカシイ。。
$_GET['code1']=="" にしたら解決しました

しかし $_GET['code1']=""  が変なのと echo "「".$_get['code1']."」"; が
まともに動作しないのって別問題と思うんですけどね。。
ともかくありがとうございました
0276nobodyさん2007/05/02(水) 09:19:39ID:jXkSXyAx
>275
空っぽの文字列を代入してるからif式はfalse
だから「」が表示される
ちゃんと動作してるんじゃね?
0277nobodyさん2007/05/02(水) 09:49:23ID:???
確かにそうですね
勉強します…
0278nobodyさん2007/05/02(水) 13:45:41ID:s9SsVluQ
$hoge[0]['name'] = "AAA";
$hoge[0]['value'] = 100;
$hoge[1]['name'] = "BBB";
$hoge[1]['value'] = 10;
$hoge[2]['name'] = "CCC";
$hoge[2]['value'] = 50;

上記のような配列を ['value']値の順に並び替えたい、
つまり
$hoge[0]['name'] = "AAA";
$hoge[0]['value'] = 100;
$hoge[1]['name'] = "CCC";
$hoge[1]['value'] = 50;
$hoge[2]['name'] = "BBB";
$hoge[2]['value'] = 10;
に変更したいのですが、どのようにすればいいでしょうか。
ご教授お願いします
0279nobodyさん2007/05/02(水) 14:15:26ID:???
>>278
$hoge = array(
 array('name' => 'AAA', 'value' => 100),
 array('name' => 'BBB', 'value' => 10),
 array('name' => 'CCC', 'value' => 50)
);

$values = array();
foreach ($hoge as $i => $val) {
 $values[$i] = $val['value'];
}
array_multisort($values, SORT_DESC, SORT_NUMERIC, $hoge);

var_dump($hoge);
0280nobodyさん2007/05/02(水) 17:45:01ID:QSxF3+cO
PHPでrequireとかファイル読み込んだ後でもフレームセットタグ無効になるんでしょうか?
ソースには頭にframesetタグが書かれてて大丈夫だと思うんだけどうまくいかなかったんで
require無くしたらいけたりしたんですけどいまいちよくわからないので詳しくわかる人があれば教えていただきたい
0281nobodyさん2007/05/02(水) 17:49:41ID:???
よくわからんけど、requireをやる前と後のHTMLソースを見比べてみたら何かわかるんじゃないの。
0282nobodyさん2007/05/02(水) 17:58:46ID:???
requireした時のファイルに空白とかが混じっててヘッダが
おかしくなってるんだろ
0283山本山2007/05/02(水) 18:08:43ID:???
たしろん
0284nobodyさん2007/05/02(水) 18:37:16ID:QbFzO5vt
DWでPHP使ってるんだけどオヌヌメの開発環境ってある?
フレームワークやらSmartyやらよく聞くがどんなものかわかんなす
0285nobodyさん2007/05/02(水) 18:44:51ID:???
>>284
フレームワークはフレームワーク。
Smartyはテンプレートエンジン。
まず公式サイトでドキュメントを読め。そしてぐぐれ。
0286nobodyさん2007/05/02(水) 19:58:22ID:???
>>284
DW使いが開発環境なんてたいそれたこといってんな。
0287nobodyさん2007/05/02(水) 20:00:38ID:???
DW使いって所詮はデザイナー上がりだろ?
デザイナー上がりって使えない奴多いよね
0288nobodyさん2007/05/02(水) 20:21:22ID:???
ちょっとログいじるために簡単なログイン機能つけたいんだけど
簡単なログイン機能つけるのって初心者には簡単じゃないなw
同じファイルの中でやろうとしたら混乱してきた
0289nobodyさん2007/05/02(水) 20:29:14ID:???
>>288
pearのパッケージでも漁ってみればいんじゃね
0290nobodyさん2007/05/02(水) 20:30:59ID:ZxrVMRS9
./data/log.txt
id<>pass

aaa.php
$fp = fopen('./data/log.txt','r');
while(!feof($fp)) {
$user = explode('<>',fgets($fp));
}
fclose($fp);
0291nobodyさん2007/05/02(水) 21:18:47ID:???
>>288
初心者が簡単にできたらそれ初心者っていうのか?
つか個人的には簡単なログインくらいなら初心者にも作れて当然だと思うけどさ。
思うに今の君に必要なのは初心者がどうのとか難しいとか愚痴ることることではなく
「マニュアルとちゃんと読む」ことと「参考になる書籍/解説Webサイト」を見て学ぶことだと思うぞ。
0292nobodyさん2007/05/02(水) 23:29:28ID:???
>>291
とりあえず深呼吸してからスレタイをよく読むんだ
0293nobodyさん2007/05/02(水) 23:30:25ID:???
それがどうした
0294nobodyさん2007/05/02(水) 23:56:44ID:???
>289 >291-293
cookieにセッションにcryptに認証状態の維持に有効期限に
初めてのことばっかで情報量多くて…すまん
0295nobodyさん2007/05/03(木) 00:15:12ID:4b9rb2Ka
PHPの問題集みたいなのない?
ZendPHPの問題集買ったが洋書でわけわかんねwwwwww
0296nobodyさん2007/05/03(木) 00:22:50ID:B994S/bS
>>284
PHP5以降を使って
Zend Framework http://framework.zend.com/manual/ja/index.html
と
Smarty http://sunset.freespace.jp/smarty/SmartyManual_2-6-7J_html/
をおすすめする。

てかその質問内容からしてフレームワークとか無理じゃない?
まずはPHPの基礎とSmartyでデザイン部分を分離するところから勉強してみたら?
0297nobodyさん2007/05/03(木) 00:26:11ID:???
つ【最新版】 
http://smarty.m-takagi.org/ ;
翻訳者のみなさんマジGJ! 
0298nobodyさん2007/05/03(木) 00:31:23ID:x91D8BN0
PHPでランダムバナーをやりたいけどわからん。
誰か作ってください。
javaはいりません。
0299nobodyさん2007/05/03(木) 00:32:06ID:???
>>298
作るのは構わんが、いくらでだ?
0300nobodyさん2007/05/03(木) 00:33:34ID:B+f7twkm
>>298
簡単過ぎる

で、いくら?
0301nobodyさん2007/05/03(木) 00:34:28ID:???
>>297
おお、サンクス。
ぶくまくった!
0302nobodyさん2007/05/03(木) 01:48:24ID:???
>>298
google adsenceのパクリシステムを作ったはいいが、
GoogleBotとチョソBotしか栗ってくれないプログラムだけどいいか?w
0303nobodyさん2007/05/03(木) 01:50:23ID:???
>>298
ほれ。

<html>
<head></head>
<body>
<?php
$i = mt_rand(1,3);
if($i < 2 ){
?>
<img src="img1.jpg">
<?php
}else{
?>
<img src="img2.jpg">
<?php
}
?>
</body>
</html>
0304nobodyさん2007/05/03(木) 01:53:51ID:ffjkYhTE
例外処理について質問があります。

エラーを独自関数で一元に管理する場合に独自関数をエラーハンドラとして設定しますが
その後の処理についてtryで囲む部分っていうのは全て囲って問題ないものでしょうか?

例を記述すると。

<?php
require_once('function.php');

set_error_handler('myErrorHandler');

try{
  $str = file_get_contents('hogehoge.txt', "r");
  $conn = mysql_connect("localhost", "user", "password");
  mysql_select_db("hoge", $conn);
  mysql_query("insert into hoge values ('".addslashes($str)."')");
} catch (Exception $e){
  echo $e->getMessage();
}
?>

こんな感じです。
0305nobodyさん2007/05/03(木) 01:55:34ID:ffjkYhTE
勿論ですが上記の場合
file_get_contentsの部分で例外が発生します。
0306nobodyさん2007/05/03(木) 01:57:57ID:B994S/bS
PHPだけで画面上のどのリンクをクリックしたかログをとりたいんだけど良いアイデアない?
数が多いので各リンクの後ろに$_GETはしたくない。しかも、外に飛んだのもカウントしたい。

JS使えばclickイベントでPHP呼び出していけそうだけど。
0307nobodyさん2007/05/03(木) 01:58:23ID:???
えーと、エラーハンドラ設定した時にtryの範囲を広げたり狭めたりするのは関係あるのか?
0308nobodyさん2007/05/03(木) 01:59:11ID:???
>>306
input type="image"で頑張れ
0309nobodyさん2007/05/03(木) 02:00:10ID:???
>>306
リファラー
0310nobodyさん2007/05/03(木) 02:04:16ID:???
外に飛ぶのも考えたらリファラーじゃ無理だな
ってか外に飛ぶのも含めるとjs使わない限り不可能だよ
0311nobodyさん2007/05/03(木) 02:06:46ID:B994S/bS
>>304
set_error_handlerはエラーが発生したときで
例外はset_exception_handlerだと思う

でhandlerは例外が発生してcatchをしなかった場合に呼び出されるので
catchしたら呼び出されない。

例外は、基本的にはある条件で自分で発生させて処理を続行したいときに使うんじゃないかな。
条件分岐みたいな物・・・っておもってたけどちがう?

set_error_handlerの使いどころは何だろ?使ったことないから解らん。
0312nobodyさん2007/05/03(木) 02:15:37ID:B994S/bS
>>310
ああ、そうか。あるページから、ある同じページに複数のリンクを張る場合を除けば
リンク元のページに張ってるある全てのリンクのリンク先のページのアクセスログのリファラーが
リンク元のページの「どのリンクがどれだけクリックされたか?」になるのか。

↑解りづらいけど、たぶんあってますよね。
考えてみたらそうですね。サンクス。

外に行くリンクはやっぱりJSじゃないと無理ですか?
基本的にはリファラーを含めたアクセスログを保存して、外に行くのだけJSで別にログを保存するかんじかな〜

ありがとでした。
0313nobodyさん2007/05/03(木) 02:38:25ID:ffjkYhTE
>>311
なるほど、参考になります。
色々試してましたが、エラーを管理するだけなら
try catch等使わずに、ただエラーハンドラを設定するだけで
いけるぽいですね。

try catchの用途がいまいち理解出来ません。
0314nobodyさん2007/05/03(木) 02:50:58ID:???
>>313
普通は1個の関数でエラーを全部処理なんてしないから。
0315nobodyさん2007/05/03(木) 02:54:31ID:???
>>312
何を面倒がってるのか知らんが普通にスクリプトかませばいいじゃん

>>311 
>>307はスルーかよ
結局勘違いだったってことでいいわけ?
0316nobodyさん2007/05/03(木) 04:00:11ID:0TC0EZ5+
質問です
<?phpだと有効なのに<?=だと無効になってしまいます
php.iniの設定だと思うのですがどのあたりなのかよくわかりません
よろしくお願いします
03173162007/05/03(木) 04:09:20ID:???
解決しますた。
0318いつもの人 ◆3Htx6mDqZs 2007/05/03(木) 04:09:34ID:???
>>312 header()
0319nobodyさん2007/05/03(木) 04:11:40ID:???
>>313
結城センセのリファクタリング入門でも読んでみ
例外処理の仕組があると何故便利なのかわかると思うよ

>>316
ttp://jp.php.net/manual/ja/ini.core.php
03203152007/05/03(木) 04:24:24ID:???
>>315
間違えた>>311宛ではなく>>313宛だった。
つまりset_error_handlerしたらtry〜catchしないといけないと思ってたのね。
例外処理は俺も前は訳分からなかったけどちょっと理解したら確かに便利だってことが分かったよ。
0321nobodyさん2007/05/03(木) 06:36:17ID:mwEz31pq
htmlのnoscriptを使わず、
phpでjavascriptがoffかどうかを判定するのは無理があるでしょうか?
0322nobodyさん2007/05/03(木) 07:10:04ID:???
>>321
JavaScriptで自動的にPHPやCookieなどにアクセスさせるようにして
そのアクセスがあればON、無ければOFFと判定はできるかも。
自動アクセスは単純な手だと画像としてsrc呼び出しなど。
ただ、画像だとブラウザ設定によってJavaScriptがONでも動作しなくなる可能性はある。
その辺はCookieを使う場合も同様。
Ajaxみたいなデータ通信であればそういった不都合は無いかもしれないが
使えるブラウザ自体が限られるかもしれない。

ただ、どんな手法を使うにせよ、判定結果が出るのは最初のPHPの処理が
全て終わって、次のアクセス以降のことになるけどね。
0323nobodyさん2007/05/03(木) 07:39:13ID:???
PHPできると彼女出来ますか?


24歳。おとこ
0324nobodyさん2007/05/03(木) 09:25:36ID:???
一生ニートのあなたには残念ながら・・・
0325nobodyさん2007/05/03(木) 10:53:35ID:???
class呼び出すと、functionも一緒に呼び出されるんだっけ?
0326nobodyさん2007/05/03(木) 11:05:22ID:+5Kuly7D
classの中に、メソッドA,Bがあります。
Aの中にある変数に、globalを使わないでBからアクセスする方法はありますか?

class Test {
  function A() {
    $a = "a";
  }
  function B() {
    //A()の$aを呼びたい
  }
}
0327nobodyさん2007/05/03(木) 11:13:20ID:???
マニュアル読め
0328nobodyさん2007/05/03(木) 11:27:39ID:???
関数まとめとかグローバル変数代用とかの目的でクラス使わないほうがいいよ
0329nobodyさん2007/05/03(木) 11:31:11ID:???
>>326
そういう風にクラス内で共有する変数があるなら普通プロパティにする
0330nobodyさん2007/05/03(木) 11:32:29ID:+5Kuly7D
>>328
同じ内容の変数を別のメソッドでも使いたいだけなのですが、
その場合は、メソッド別に変数を定義するべきでしょうか?
ていうかそういう場面ってありませんか?
0331nobodyさん2007/05/03(木) 11:32:33ID:???
>>328
まとめる為にクラス使ったら
newするのめんどくさくね?

class使わないほうがそのままfunction呼び出せるから便利
0332nobodyさん2007/05/03(木) 11:33:54ID:+5Kuly7D
>>329
どうもありがとうございます。
プロパティの概念はよくわかっていないので、調べてきます。
0333nobodyさん2007/05/03(木) 11:35:23ID:???
>>330
いやそんな基本的なことも分からないってことはオブジェクト設計とかもどこ吹く風っしょ?
まぁ別にいいけど。
プロパティ変数使えばいいともうよ。
0334nobodyさん2007/05/03(木) 12:07:27ID:869V7SM7
PHP5.2でnamespaceもお流れになったから
globalにfunction作りまくるよりはclass使ったほうが良いと思う
newマンドクセならstaticにするべ
0335nobodyさん2007/05/03(木) 12:21:03ID:???
>>331
クラス使う目的は面倒くさいとかそうでないとかではないだろ
インスタンス化が面倒だったらstatic使えば
03363312007/05/03(木) 12:34:04ID:???
>>335
ごめ、今までクラス使ったことないからわかんない
クラスって何だろう?って思うと、皆はまとめるだけとかいうが、
俺は別に必要性を感じないから使っていない
0337nobodyさん2007/05/03(木) 12:38:35ID:???
>>336
つOOP
0338nobodyさん2007/05/03(木) 12:40:48ID:???
>プログラムの部分的な再利用がしやすくなるなどのメリットがある。
functionあるし、やっぱり必要性を感じない俺は末期wwwwww
0339nobodyさん2007/05/03(木) 12:42:34ID:???
>>338
まだ始まってすらいねーよ
0340nobodyさん2007/05/03(木) 12:44:51ID:???
>>339
まだ20歳だし、勉強していこうと思えばなんとかなるかな?


しかし、2年も独学で勉強していてここまで成長がないのは俺だけでいい
0341nobodyさん2007/05/03(木) 12:54:40ID:???
>>338
デザインパターンについて勉強してみると多分有効性が分かる
0342nobodyさん2007/05/03(木) 12:55:15ID:???
無理してOOPなんて使う必要はない。
趣味でやる場合は特に。
会社に入れば使えるようになるし、
覚えようと思って覚える必要はない。
■ このスレッドは過去ログ倉庫に格納されています