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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0320nobodyさん2007/07/17(火) 16:37:38ID:???
>>315
うちも似たようなことやってる。include(require)は結構応用がきいて便利。
メソッド内部でよみこめば$this参照ができてメソッドを使えるし、部品ごとにわけれてソースが綺麗になる。
なにより分解していくとかなり使い回しを意識してコードを書けてる気がする。

>>319
なんでもいい気がする。Unicodeにすれば
?(SJIS)と?xE63E;(Unicode)で同じ文字になってたらそれでいいんじゃない
0321nobodyさん2007/07/17(火) 19:04:22ID:k2OQL4pV
配列の並び替えについてなんですが、
forの繰り返し処理で値を参照し、数字が出た場合
その要素を、その数字のキーを持つ配列の直後に並べ変えたいのですが、
可能ですが?

(例)
rei[1]="いぬ"
rei[2]="ねこ"
rei[3]="こねこ"
rei[4]="1"
rei[5]="ぬこ"



rei[1]="いぬ"
rei[2]="1"
rei[3]="ねこ"
rei[4]="こねこ"
rei[5]="ぬこ"

こんな感じです。

宜しくお願いします。
0322nobodyさん2007/07/17(火) 19:09:18ID:???
意味がわからない
0323nobodyさん2007/07/17(火) 19:12:15ID:???
よくわからんがヒントをやろう

・配列のキーを取得
・キーに1を足す
・配列の値に↑の値があるかチェック

あとは自分で考えろ
0324nobodyさん2007/07/17(火) 19:14:54ID:???
ある別サーバーのサイトのCGI( http://example.com/hoge.cgi?m=test )を
phpからプロクシ的に操作したいのですが、
どのようにすればよいでしょうか?

readfile( 'http://example.com/hoge.cgi?m=test' );
としてみましたが
script not found or unable to stat: /home/taro/public_html/hoge.cgi
となぜかphpを設置したサーバーのパスで、「ファイルが存在しない」というエラーが出ます
0325nobodyさん2007/07/17(火) 19:21:19ID:???
誤爆です。聞くスレ間違えました
0326nobodyさん2007/07/17(火) 19:56:28ID:???
なんかだんだん、エスパーレスが必要になってきたな。
0327nobodyさん2007/07/17(火) 20:37:42ID:???
すみません
今、php5.2.3をインストールしてphp.iniの編集をしてたんですが、
mbstring.script_encoding の指定がありません
(以前使ってた5.2.0ではあって、euc-jpを指定しています)
これは気にしなくていいものなんですか?
0328nobodyさん2007/07/17(火) 20:45:29ID:???
すみません、解決しました
0329nobodyさん2007/07/17(火) 21:49:25ID:iq9KHvpN
PHPを勉強しています。
基本は理解できているのですが、
classを利用したプログラミング、また、
オブジェクト指向の概念が理解できません。
本を買ってclassの基本構造などは理解しましたが、
自分で書くとなるとどのような場面で
どういったclassを書けば良いのか
さっぱり検討がつかない状態です。
このような段階(レベル)から一段ステップアップする為には
どうしたらよいでしょうか?
習得にあたって参考になった書籍や、
経験に基づく習得方法などを教えてください。

購入した書籍
■はじめてのPHP5プログラミング エキスパート編 (単行本)
■いちばんやさしい オブジェクト指向の本 (新書)
0330nobodyさん2007/07/17(火) 21:56:16ID:???
いい加減、OOPわかりませんできません
に対する内容をテンプレに入れたらどうだ
0331nobodyさん2007/07/17(火) 22:06:09ID:???
>>329
オブジェクト指向分析・設計関連の本でも探してみては
あとは経験かなぁ

補助本としてなら
デザインパターン入門 結城浩
リファクタリング入門 結城浩
UMLモデリングのエッセンス マーチン・ファウラー
0332nobodyさん2007/07/17(火) 22:09:59ID:???
読んで学ぶのもあるけど、経験してから、読んで、
自分の経験と記述を比較してみるってこともしないとね。
オブジェクト指向って、実践知の最たるものだから。
ごちゃ混ぜの中から自分の経験をパターンの合わせてトレースしてみること。
03333292007/07/17(火) 22:24:46ID:iq9KHvpN
>331,332
早速のレスありがとうございます。
経験が重要ということですね。
仕事で書いているわけではないので、参考書籍を紐解く以外に
なかなか経験値を積めないのが悩みです。

各種ライブラリやフレームワーク(MVC)などの
次のステップに早く進みたいので、
classを利用したプログラミングをなんとかマスターしたいです。

また、Rubyでオブジェクト指向を理解したという人や、
Objective-Cなどでweb以外ものを作るとわかるかもという意見もあるようですが、その他にも分かり易い方法などがあればアドバイスをお願いします!
0334nobodyさん2007/07/17(火) 22:32:46ID:???
具体的にあげていったらきりがないし漠然と説明しようとしたら意味分かんなくなる。
意識しすぎて無闇に不必要な物まで小分けして可読性が低くなったら本末転倒だしね。
>>332の言ってるように実際に概念的な事柄だけ頭の隅に置いておいて
幾つか自分で作ってから本を読んで当てはまりそうな部分を掘り下げて
リファクタリングしていったほうがいいんじゃないかと
オブジェクト指向を理解していない俺様が講釈たれにきましたよ。
03353322007/07/17(火) 22:33:21ID:???
>>333
こんなところにぐだぐだレス書いてる暇があったら
プログラムの一行でも書け
0336nobodyさん2007/07/17(火) 22:34:55ID:QKoDyMoX
>>327です わからないのでどなたか教えてください

>>328
わざとですか? たまたまですか?
0337nobodyさん2007/07/17(火) 22:37:12ID:???
>>333
ライブラリやフレームワークなんてオブジェクト指向の最たるものだから
順番やステップとかきにしないでやりたいことを
とりあえずやってみた方が飛び越えてから理解できるってこともあるし
やってみてもいいんじゃまいか?
0338nobodyさん2007/07/17(火) 22:37:38ID:???
>>333
だからウダウダ言ってないで
PEARみたいなライブラリなりFWなりのソースひたすら読んで
自分でとにかく書いて気づいていくしかねーんだよこのタコ
「OOPを理解した!」なんてもんはそんな気がするだけだ
OOPに近道なんざねーよ
0339nobodyさん2007/07/17(火) 22:42:18ID:???
以上>>333叩きは終了


次の質問を受け付けます
0340nobodyさん2007/07/17(火) 22:50:15ID:???
可哀想に、、
OOPは自分が必要に思えるようになるまで必要ない。(仕事の場合は除く)
0341nobodyさん2007/07/17(火) 22:50:51ID:???
>>339
妻が最近夜の相手をしてくれません。
0342nobodyさん2007/07/17(火) 22:59:59ID:???
>>336
とりあえず>>1を読んでニセモノが出る理由を考えてください。
0343nobodyさん2007/07/17(火) 23:00:34ID:???
>>341
モデルのような奥様なら、観るだけで自分の欲望をコントロールできると思います。
0344nobodyさん2007/07/18(水) 00:45:04ID:???
>>341
最悪の場合、奥さんが第三者にfuckされている可能性があります
0345nobodyさん2007/07/18(水) 00:50:01ID:???
植物だって生きているのに、動物を殺していないから、
俺たちは殺生していないと詭弁を弄するアホな坊主とオマエら一緒だな。
恥を知れよ。
0346nobodyさん2007/07/18(水) 00:53:21ID:???
↑頭わるそうだな
0347nobodyさん2007/07/18(水) 00:58:57ID:???
お決まりなので・・・・


オマエモナー
0348nobodyさん2007/07/18(水) 01:08:59ID:???
>>336
--enable-zend-multibyte
0349nobodyさん2007/07/18(水) 01:13:43ID:???
>>348
もうすこし具体的に書いていただかないとわかりません。
おねがいします
0350nobodyさん2007/07/18(水) 01:29:22ID:???
PHPをインストールする際に--enable-zend-multibyteと--enable-mbstringオプションを
指定することで、mbstring.script_encodingディレクティブが有効になる。

これはソースをSJISで書いているときに必要になるぐらいのもの。
0351nobodyさん2007/07/18(水) 02:02:13ID:PiKxEDAI
php 5.1.6 Apache 2.0.52 CentOS 4 です。

以下の様にpreg_replaceで$srchtmlに格納されてますタグの置換を行っています。
$styleには
color="#FF0000" size="4"
がちゃんと取り出されてるのですが、サブルーティンでexplodeしようとすると
検索されません。
Array[0]=' color="#FF0000" size="4"'
となってしまいます。試しに、ほかのキー「FF」で試しても同じでした。
試しにfunction fontcss内で
$myarray = explode(" ","hoge hoge huga huga");
としますと、こちらは問題なく、検索されて配列になります。
ど、どなたかお知恵を。。。


$search = array ('/<font(.[^>]*)>/','!<div id="([0-9][0-9])">!');
$replace = array ($this->fontcss("$1"),$this->divconv("$1"));
preg_replace($search, $replace, $srchtml);

function fontcss($style){
$myarray = explode(" ",$style);
....
}
0352nobodyさん2007/07/18(水) 02:08:55ID:???
5.1系はバージョンアップしてもいいんじゃないのか
0353nobodyさん2007/07/18(水) 02:10:46ID:???
\bもためしたの?
0354nobodyさん2007/07/18(水) 02:42:34ID:???
>>351
それだと$replaceにはその時点での関数の返り値が入るだけになってしまうから、
おそらくあなたがしたいのはこちらではないかな?
http://jp.php.net/preg_replace_callback
0355nobodyさん2007/07/18(水) 03:08:03ID:???
>>354
ありがとございます、まさしくそれでした。
0356nobodyさん2007/07/18(水) 08:59:29ID:???
>>329にリアル嫉妬した
0357nobodyさん2007/07/18(水) 12:58:43ID:FfDpKpOg
アップロード時のローカルファイルアドレスはどこに格納されているのでしょうか
mixiでは「c:\hoge\123.jpg」と確認ページに出てるのですが。
print_r($_FILES);
print_r($_REQUEST);
print_r($_POST);
ファイル名しか見当たりません…
0358nobodyさん2007/07/18(水) 13:02:33ID:???
php.iniで指定された場所に保存されるけどサーバープロセスが終わると消える。
0359nobodyさん2007/07/18(水) 13:05:23ID:EIaU60X9
ボタンをクリックしたらデータを追加するようにするにはどうしたらいいんですか?
0360nobodyさん2007/07/18(水) 13:15:56ID:???
>>357
どこにも格納されていない
なのでJS使って自前でPOST

>>359
何のボタンなのかわからんので答えられない
0361nobodyさん2007/07/18(水) 13:23:47ID:EIaU60X9
>>360
追加ボタンを押したらSQL文を使ってデータベースに追加したいんです
0362nobodyさん2007/07/18(水) 13:38:36ID:???
>>361
データベースに接続して
インサート文を実行すればいい
0363nobodyさん2007/07/18(水) 13:48:29ID:EIaU60X9
>>362
そのSQL文がよくわからないんです
一応参考書どおりに書いたんですけど反映されません
0364nobodyさん2007/07/18(水) 13:53:31ID:???
勉強してください
0365nobodyさん2007/07/18(水) 14:01:56ID:2QFnxZCZ
bool値を一番シンプルに反転するコードはどうすればいいですか?
0366nobodyさん2007/07/18(水) 14:01:59ID:???
例だけでも教えてください
0367nobodyさん2007/07/18(水) 14:02:56ID:???
改行コードCRLFをLFに修正するスクリプトを作成したいのですが、
肝の「正規表現で改行部分を修正」というのが自信がありません。

$text_data = preg_replace("/\r\n$/m", "\n", $text_data);

↑これでモウマンタイでしょうか?
0368nobodyさん2007/07/18(水) 14:06:20ID:???
>>365
!
0369nobodyさん2007/07/18(水) 14:09:50ID:???
>>363
hoge_tblという名前のテーブルにhogei(int型)とhoget(text型)というカラムに入れる場合は
INSERT INTO hoge_tbl(hogei,hoget)values(1,'ああああああ')
を実行する
テーブル名とカラム名は時分の設計したDBにあわせて変更すること
あとは試行錯誤するか他の暇なやつが現れるのまて
0370nobodyさん2007/07/18(水) 14:15:01ID:FfDpKpOg
>>どこにも格納されていない
>>なのでJS使って自前でPOST
onclickで複合技なのですね、ありがとうございます。
0371nobodyさん2007/07/18(水) 14:20:39ID:???
>>369
暇じゃないが、一言いっておくと、そのSQLだとvaluesが小文字になっているから動かないよ。
あと、テーブル名も大文字にしておかないと、Windowsでは動くけどLinux上では動かなくて慌てる。
どうしてかは、もう分かったよね?
0372nobodyさん2007/07/18(水) 14:24:50ID:EIaU60X9
>>369
ありがとうございます
SQL文はできたと思うんですが
ほかに足りないステートメントがあるんでしょうか
0373nobodyさん2007/07/18(水) 14:26:26ID:???
valuesが小文字だと動かないDBなんてあるのか?
0374nobodyさん2007/07/18(水) 14:27:50ID:bXBOiS7Y
PHPの最初に
<?xml version="1.0" encoding="Shift_JIS"?>
header('Content-Type: application/xhtml+xml');
を記述すると、どうしてもファイルのダウンロードになってしまうんですが、
どうすればちゃんと表示できるのでしょうか?
0375nobodyさん2007/07/18(水) 14:32:50ID:???
>>373
MySQLの5.0からは、予約語の小文字は動かなくなっている。
03763742007/07/18(水) 14:36:13ID:bXBOiS7Y
ごめん、なんでもない
自分でも何がしたいのかわかんね
0377nobodyさん2007/07/18(水) 14:41:07ID:???
>>375
ソースくれ
少なくとも今俺の手元にあった5.0.38では
INSERT INTO (〜) values (〜) でも動作している
0378nobodyさん2007/07/18(水) 14:43:57ID:???
>>377
つ公式サイト
0379nobodyさん2007/07/18(水) 14:47:35ID:???
>>374
( ´∀`)σ)´Д`)
0380nobodyさん2007/07/18(水) 14:48:16ID:???
>>372
371がいったことも考慮して
まだ入らないなら
1、DB接続チェック
2、カラム名のスペルチェック
3、インサートのVALUESのチェック
intは未入力はデフォルトが設定されていないとエラーになる0かNULLを入れること
textとdateはシングルクォートが必要
4、文字コードのチェック

>>375
へぇ〜MySQLってそうなんだ
0381nobodyさん2007/07/18(水) 14:48:34ID:???
>>377
INSERT INTO T_SAMPLE values(1, '半井は、最近調子に乗りすぎ');
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values' at line 1
0382nobodyさん2007/07/18(水) 14:51:54ID:???
予め予約語を大文字で書く癖つけてる俺は勝ち組wwww
PHPだと逆だけどね・・・
0383nobodyさん2007/07/18(水) 14:59:51ID:???
>>378
予約語のとこにも載ってない
てかSQLでそんなケースセンシティブなことってあるか?
予約語で使われてる同名の識別子を
バッククォートしてないとかならともかく

>>381
integerとtextカラムのtableで試したけどそれでINSERTできるよ
そっちのバージョンは?
0384nobodyさん2007/07/18(水) 15:01:21ID:???
英文も読めないバカがおおいいな
0385nobodyさん2007/07/18(水) 15:29:03ID:EIaU60X9
>>380
入りました
でも1行目に入ってしまうんですがどうすればいいのでしょうか
入れたいのは4行目なんです
0386nobodyさん2007/07/18(水) 15:31:29ID:???
>>385
取り出すときに並び替えりゃいいんじゃないの?
0387nobodyさん2007/07/18(水) 15:32:53ID:???
あるファイルに記述された関数の中から、呼び出した側のファイル名を
知る方法があれば教えてください
0388nobodyさん2007/07/18(水) 15:34:50ID:???
>>385-386
auto_incrementのこといっているのか?
一回、内部インデックスをクリアーしないと駄目じゃないか?
0389nobodyさん2007/07/18(水) 15:40:19ID:EIaU60X9
間違えました
入ってませんでした;;
何がいけないんでしょうか
0390nobodyさん2007/07/18(水) 15:40:57ID:???
環境によってことなるファイルパスの区切り子を知る方法ありませんか?
__FILE__とか使えばイモっぽい方法で分かりますが
もっとクールに知りたいです
0391nobodyさん2007/07/18(水) 15:44:56ID:???
>>385
DB内の並び順は当てにしない
386の言う通り取り出し時にソートする

並び替えが必要ならユニークなシーケンスをふって取り出すときに
order by(ソート) すれば入れた順に並び替えができる
任意番号をふってもOKでその場合も取り出し時にソートをすればいい
SQLの方が早いが最悪PHPでソートするという手もあるにはある…

ちなみに内容が板違いになっていっているのでDB板で聞いたほうが
良いと思う
0392nobodyさん2007/07/18(水) 15:45:16ID:???
>390

php パス 区切り
で google 検索したら 4番目に出てきませんか?
0393nobodyさん2007/07/18(水) 15:47:49ID:???
>>392
さりげなく、自分サイトの宣伝乙
0394nobodyさん2007/07/18(水) 15:49:07ID:???
>>392
ありがとうございました
>>393
恥を知れ
0395nobodyさん2007/07/18(水) 15:56:53ID:???
宣伝乙
0396nobodyさん2007/07/18(水) 16:02:49ID:bXBOiS7Y
とりあえず聞きたいことがまとまったので書きます。

DoCoMoでCSSを使いたいのですが、XHTML形式じゃないとダメみたいなんです。
これは、形式をxhtmlにしなくてもheaderでxhtmlを宣言していれば大丈夫ということなのでしょうか?
metaでxhtml+xmlで試してみたのですが、DoCoMoではうまくCSSが使えません。
headerでxhtml+xmlを宣言した場合、なぜかPCで見るとファイルのダウンロードになります。
どなたかアドバイスお願いします。
0397nobodyさん2007/07/18(水) 16:02:57ID:???
たちの悪い冗談ぐらい華麗にスルーしましょう
0398nobodyさん2007/07/18(水) 16:07:17ID:???
>>396
「docomo css」で検索したらそれらしいのがゴロゴロ出てきたけど。
ヘッダーがそもそも違うみたいだからUAとかで判別してヘッダー出せばいいんじゃないの?
とちょろっと検索しただけで適当に言ってみる。
0399nobodyさん2007/07/18(水) 16:11:30ID:bXBOiS7Y
>>398
有難うございます。
UAで判別して携帯のみheaderでxhtml宣言することにします。
当方auなので確認する術がありませんので、知人にテストしてもらいます・・・。
0400nobodyさん2007/07/18(水) 16:28:12ID:sSp2i6sO
ページを移りかえるたびにfile関数でファイルを読み込むのはやめたほうがいいですか?
負荷はあんまり気にしないほうがいいでしょうか?
0401nobodyさん2007/07/18(水) 16:31:06ID:???
そんな大量のアクセスじゃなければ問題ないよ
0402nobodyさん2007/07/18(水) 16:32:44ID:???
え?fileになんか問題あんの?
そんなのよくある処理じゃね
0403nobodyさん2007/07/18(水) 16:34:52ID:sSp2i6sO
大量のアクセスはないとは思うのですが、少しでも負荷をへらしたいとおもってます。
いちおう、セッションつかって一回しか読み込まないようにしてみたんですけど
数字的にみて、毎回ファイルを読み込むのと↓のコードはどちらが効率がいいですか?

session_start();



if ($_SESSION['a'] != 1) {

echo $_SESSION['a'] = 1;
echo "ファイルを読み込みました";

$filename = "../data/schedule/schedule.dat";
$_SESSION['str'] = file($filename);

}


echo "出力";

print_r($_SESSION);
0404nobodyさん2007/07/18(水) 16:35:11ID:EIaU60X9
SQL文を入れるだけではだめなんでしょうか?
関数は何を使えばいいんですか?ODBCです
0405nobodyさん2007/07/18(水) 16:37:11ID:???
>>403
おまえ頭いいな
0406nobodyさん2007/07/18(水) 16:37:42ID:???
>>403
負荷気にするならDB使えばいいと思うんだが
0407nobodyさん2007/07/18(水) 16:40:22ID:???
>>405
お前は馬鹿かw

>>403
負荷を減らしたいなら
一般的にはそのdatファイルの更新がかかった際に静的なHTMLページを更新するってのが一般的かな
SESSIONの場合更新がかかったとしても古いデータを読むことになるからね。
0408nobodyさん2007/07/18(水) 16:44:02ID:sSp2i6sO
DB使いたいのですがサーバの仕様上インストールされてないので使えませんでした。
静的にHTMLページを作成することにします。
0409nobodyさん2007/07/18(水) 17:03:09ID:???
>>408
そんな貴方にsqlite
0410nobodyさん2007/07/18(水) 17:35:13ID:???
そんな貴方にXML
0411nobodyさん2007/07/18(水) 18:55:58ID:???
私、今ぼっきしているんです。
_ト. ̄|○
0412nobodyさん2007/07/18(水) 19:05:33ID:???
反応にこまるんだが
0413nobodyさん2007/07/18(水) 19:22:32ID:sSp2i6sO
ユーザー関数aaaから帰ってきた配列(1,テスト)のテストという部分を出力したいのですが、
echo aaa()[1]では以下のエラーが返ってきました。
Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\www\test.php on line 2

echo aaa()[1]をどのように直せばテストと表示できるのでしょうか?

<?php
echo aaa()[1];


function aaa(){

$abc = array(1, "テスト");

return $abc;

?>}
0414nobodyさん2007/07/18(水) 19:28:45ID:???
式の戻り値から直接ブラケットで
配列アクセスする事はPHPではできない
一旦変数に入れるか、array_slice(aaa(), 1, 1)か
0415nobodyさん2007/07/18(水) 19:39:20ID:???
>>413
PHPでは返り値がオブジェクトなら出来るけど配列だと出来ないんだよねぇ
その場合ならend()を使うという手もある。
0416nobodyさん2007/07/18(水) 19:40:30ID:???
>>415
は?!オマエ馬鹿か?
普通に配列を戻り値にできるだろwwww
0417nobodyさん2007/07/18(水) 19:40:37ID:???
>>413
関数の引数になんか付けて「テスト」だけ返すようにするとか・・。
用途が分からないからなんとも助言しにくい。
0418nobodyさん2007/07/18(水) 19:43:04ID:???
>>416
アクセス演算子の話だどあほう。
0419nobodyさん2007/07/18(水) 19:44:37ID:???
>>415
馬鹿すぎて吹いたw
■ このスレッドは過去ログ倉庫に格納されています