【PHP】下らねぇ質問はここに書き込みやがれ 45
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/27(金) 10:02:42ID:H9gF1SfBPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、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カテゴリ)の各スレで
0175nobodyさん
2007/05/01(火) 01:23:50ID:???http://jp.php.net/session
0176nobodyさん
2007/05/01(火) 01:27:07ID:???mb_encode_mimeheader関数の使い方について質問させてください。
この関数で送信者名(ヘッダのFrom)に入力された日本語をMIMEエンコードしようとしています。
前に読んだ書籍では日本語部分にのみこの関数を使用すること、
という記載があったと記憶してるんですが現在確認できません。(マニュアルにも記載なし)
例えば入力された送信者名が「progra民具」さんだったら「
民具」のみ切り分けてMIMEエンコードすること、という説明だったと思います。
テストしている範囲ではそのまま
$fromName = mb_encode_mimeheader("progra民具");
で特に問題なくエンコードできてるんですが・・・
メール送信をすでに実用している方、どのようにされていますか?
0179nobodyさん
2007/05/01(火) 02:21:04ID:???メールヘッダーに生の日本語入れるつもりか・・・
0180nobodyさん
2007/05/01(火) 02:37:50ID:???0181nobodyさん
2007/05/01(火) 03:30:08ID:1OYzEHDwphp+postgresqlを使っています。
grant 操作 on クラス to ユーザ;
ってapacheとDBをつなげるときに必要みたいですが、
publicで大丈夫でしょうか?
よろしくお願い致します。
0182nobodyさん
2007/05/01(火) 03:34:06ID:???まず1000文字あるかどうか確認して
もしあればケツから一番近い改行
までを取得すればいいだけでないの?
1000文字以上ある場合は一度最後まで
改行があるかどうか走査する必要はある。
>>181
それはPostgreSQLの権限の話だよな?
Apacheユーザ(言うなればPHPユーザ)
がDBにアクセスできるように、またアクセス
制御を行うためにDB側で設定する。
まったくPHP関係ないけどgrant分にpublic
なんかあったっけ?
0183nobodyさん
2007/05/01(火) 03:49:20ID:3L8/2YzFis_int()だと文字列なのでfalseになり、
is_numeric()だとtrueになる幅が広すぎます。
整数を表す文字列かをうまく調べるにはどうすればいいですか?
0185nobodyさん
2007/05/01(火) 04:23:10ID:???条件が整数だから
preg_match('/^-?[1-9]¥d*$/', $string)
の方がよくなくね?
0186nobodyさん
2007/05/01(火) 04:25:09ID:???'0'===$string || preg_match('/^[\-+]?[1-9]\d*$/', $string)
0187176
2007/05/01(火) 04:27:57ID:???数値文字列を整数型に型キャストしてから調べては。
is_int((int)$num_str)
>>179
エンコードはする前提なので、>>177氏の助言は、
あくまで関数の使い方ことですね。
0188nobodyさん
2007/05/01(火) 04:39:06ID:???> is_int((int)$num_str)
だと '10 hogehoge' とかも通るんじゃなかたけ?
0189nobodyさん
2007/05/01(火) 04:45:09ID:???0190nobodyさん
2007/05/01(火) 04:52:53ID:???PHP+MySQLにするとサーバーへの負荷はどのくらい変わりますか?
アクセスのたびに呼び出す仕様です。
0192181です。
2007/05/01(火) 06:31:19ID:1OYzEHDwではgrantは関係ないってことですか?
0193nobodyさん
2007/05/01(火) 07:47:04ID:???grant構文はレン鯖業者のためにあるようなものです。
publicは登録されている全ユーザに同じ権限を与えるものです。
自鯖などで1人で使う場合、自分用に1つ作ればいいんじゃないすか?
知り合いに貸して、その知り合いがDBを使いたいならば、
その知り合いに対してgrant文を実行する感じです。
0194193
2007/05/01(火) 07:50:16ID:???>apacheとDBをつなげるときに必要
必要なのはapacheのconfでモジュール組み込むことじゃないっすかね。
0195nobodyさん
2007/05/01(火) 11:16:25ID:???CGIとしての動作ってなんだよ
0196nobodyさん
2007/05/01(火) 11:55:08ID:???よくあるパターンだと
webアクセス専用にユーザ用意 + 権限設定するから
全く関係ないわけじゃない
とりあえずgrantで何ができるか確認してみたら?
>>195
こんなところか?
ttp://jp.php.net/manual/ja/install.general.php
0197180
2007/05/01(火) 12:28:23ID:???ありがとうございます。
ただそれだと意図した動きになりません。
$hogeは普通の文ですので改行もたくさんあります。
そして1000文字以下の場合もあれば、2000文字以上の場合もあります。
なので見やすいように1000文字単位で区切ろうと思っています。
substr($hoge, $page*1000, 1000) //$pageは数字
これで1000文字単位の文字は取れるのですが、変な切れ方になるので改行で区切りたいのです。
0198nobodyさん
2007/05/01(火) 12:33:53ID:???http://php.net/wordwrap
とか
http://php.net/strrpos
とか使ってみれば?日本語でうまくいくのか知らんけど。
それから>>1読んでね
0199虚弱PHP
2007/05/01(火) 12:49:20ID:???改行でってのは、結構面倒だと思うから、
mb_strwidthでも使えばいいんじゃないかな。
どうしても改行でやりたくて、
うまくいかないならソースplease。
0200虚弱PHP
2007/05/01(火) 12:52:35ID:???http://www.php.net/manual/ja/function.mb-strimwidth.php
0203nobodyさん
2007/05/01(火) 15:44:06ID:???1. 文字列aの長さを測る
2. aが1000文字以内ならループブレイク
3. aを添え字0-998までとそれ以降に分ける
4. 前者の末尾に改行をくっつけて配列にぶちこむ
5. aに後者を代入 1に戻る
いや、冗談だけどさ
改行なんてどこに入っててもいいじゃん
0205nobodyさん
2007/05/01(火) 16:40:02ID:???をごっちゃにして、勝手に混乱するよね、この文字切り・改行厨ってのは。
この手の質問、何度見たか。
0206nobodyさん
2007/05/01(火) 17:27:07ID:???あー、それ俺が感じていた疑問というかモヤモヤを見事に指摘しているわ。
自分が「こうしたい」という問題を、プログラミング的にに落とし込んでから(または落とし込む方法を)質問するスレです。
とかに変えたほうがいいかも。
PHPに絡むならビジネスロジックだろうとスクリプトの設置・改造方法までOKだと勘違いしてる奴多いからな。
0208nobodyさん
2007/05/01(火) 17:52:41ID:smYMDtq3「つ」以降の先頭文字検索でつ以外の文字も抽出されるのですが
どうすればよいでしょうか?
あ〜ちまでの文字は普通に抽出されます。
$str="つ";
$SQL="SELECT * FROM tbl WHERE field1 LIKE '$str';";
0209nobodyさん
2007/05/01(火) 18:01:12ID:???あと文字コードは何でつか?
0210nobodyさん
2007/05/01(火) 18:10:07ID:smYMDtq3$SQL="SELECT * FROM tbl WHERE field1 LIKE '$str%';";
文字コードはJISです。
0211nobodyさん
2007/05/01(火) 19:15:14ID:EEwZpxpS雇われ給料もしっかりと払われ、片や、事務職の給料の安い派遣のお姉ちゃんが
一生懸命マクロ・VBAを組んでいる。
これは非常に矛盾です。
0213nobodyさん
2007/05/01(火) 19:44:59ID:EEwZpxpSおねえちゃんがほしいんです!
0216214
2007/05/01(火) 20:10:02ID:???0220214
2007/05/01(火) 20:17:58ID:???エロコレクションを削除したら空が5GBになった
削除する時はverupなみの勇気がいる
0221nobodyさん
2007/05/01(火) 20:39:13ID:???DBの設定もDBの中身も
phpの設定も動かしてるスクリプトも
全部JISなの?
一応訊いておくけどShift_JISじゃないんだよね?
0222nobodyさん
2007/05/01(火) 20:39:41ID:ghVsgOyNこのエラーはどこを改善すればいいのでしょうか。
htmlspecialchars関数が期待する文字列より長い?という意味だと思うのですが。
何か制限があるのでしょうか。
マニュアルとGoogle先生にはお尋ねしたのですが、分かりませんでした。
0225180
2007/05/01(火) 20:59:51ID:???日本語でお願いしますね^^
あと求めているのは答えですからオナニー論理はメモ帳にでもかいててくださいな
軟式さんが仰っているように簡単な問題ではないと思いますが
0226Lisa
2007/05/01(火) 21:14:20ID:vsWpEyDKあったら教えて下さい☆ あと、CIWのウェブ言語 PERL基礎って
試験は、受験制約はあるのかなぁ
0230nobodyさん
2007/05/01(火) 22:16:57ID:???0231nobodyさん
2007/05/01(火) 22:25:19ID:???「書き込みやがれ」だから、答えるとは言ってないし。
0232nobodyさん
2007/05/01(火) 23:00:06ID:???Perlは新規案件減ってるし
どっかの誰かが書いた理解不能なコードの修正とかあるからオススメできない
つか、普通Perl案件で資格なんて考慮されない
今プログラマ案件で一番要望多いのはJava技術者
と、人事の人から聞いたが
デスマーチ案件も多いから気をつけろ
0233Lisa
2007/05/01(火) 23:02:50ID:???( ?д?) 受けたいんですが、なにか?
ハ∨/^ヽ
ノ::[三ノ :.'、
i)、_;|*く; ノ
|!: ::.".T~
ハ、___|
0234nobodyさん
2007/05/01(火) 23:24:19ID:???0235nobodyさん
2007/05/01(火) 23:48:13ID:OxYFPqZQ$obj = new hogeHoge("");
とするクラスの実行箇所が、1ファイル上にいくつもある場合、
それだけで負荷がかかかりますよね?class内部の関数を実行していなくても。
ポイントの仕組みなどを作っている時、
ポイント設定テーブルの読込→会員テーブルの読込→
会員ポイント状況の読込→ポイントの付与→ポイントの更新
など、それぞれに応じて異なるテーブル・classを実行する必要があるので、
newする回数がどうしても増えてしまいます。作り方にもよるでしょうが、
なんどもclassを実行する場合、処理の遅れなどは仕方ないのでしょうか?
0237nobodyさん
2007/05/01(火) 23:51:39ID:???「気にしない」が正解。
もうちょっと詳しく書くと、そういうことを気にして性能に影響あるかどうかわからないところで
わかりづらいコードを書くよりもまずは綺麗にわかりやすいコードを書くべし。
性能に問題が出てからはじめて性能測定をして最適化を行うなり、
機材の増強を図るなりすればいいのだ。
0238nobodyさん
2007/05/01(火) 23:53:58ID:???すると、$objん中に何はいるのよ
0239nobodyさん
2007/05/02(水) 01:30:41ID:???ポイント云々ならポイント操作関連を一まとめにしてっていうか、
それを一つのデータ型っぽいものにするっていうのがclassの真骨頂なような
それでなければ普通の自作関数かstaticなclassの関数呼び出しにするとか
0240nobodyさん
2007/05/02(水) 01:40:51ID:???っぽいもの
0241nobodyさん
2007/05/02(水) 02:08:52ID:???それで負荷がかかってどうしようもないなら
オブジェクト設計に問題があるんじゃないか?
アクションメソッドやDAOで抽象化するのは普通。
どう考えてもインスタンス化じゃなくて中身の処理が悪くて実行時間がかかってると予測するが。
0242nobodyさん
2007/05/02(水) 02:42:07ID:???何かおぬぬめのエディタない?
0243nobodyさん
2007/05/02(水) 02:45:14ID:???その例の場合インスタンスの生成なんかより
DBとの会話のほうがロスが大きそうなので
ストアドプロシージャ使ったほうがいんじゃね
あとなんとなくだが
リファクタリングの本を一通り読んでみることをオススメする
0245nobodyさん
2007/05/02(水) 02:55:47ID:???TEST
</TAG>
タグの間の文字列(上の場合TEST)を抜き出したいのですが、
どういった関数を利用するのがベターでしょうか?
0246nobodyさん
2007/05/02(水) 02:57:06ID:???0249nobodyさん
2007/05/02(水) 03:54:38ID:???0250nobodyさん
2007/05/02(水) 03:54:43ID:???0253nobodyさん
2007/05/02(水) 04:01:44ID:???0254nobodyさん
2007/05/02(水) 04:04:41ID:???0255245
2007/05/02(水) 04:14:02ID:???これで改行も認識されますか?
0257245
2007/05/02(水) 04:18:39ID:???意味的には、
((?:(?!<\/TAG>).)*?)
が</TAG>以外、
という感じなのはなんとなくわかりますが、
(が2個続いていたり:や?の役目がよくわからんです。
>>251
正規表現の本5冊ほど持ってますが、
さっぱりです。初めて英語を勉強したとき以上のカルチャーショックです、
呪文です、あれは。
0259nobodyさん
2007/05/02(水) 04:20:34ID:????:は後方参照しない
?!は否定
()はグループ化して後方参照
0261nobodyさん
2007/05/02(水) 04:27:00ID:???オライリーの「詳説正規表現」以外は要らない。
1,2,3章の入門編を軽く流したら、4,5章を徹底的に理解すべし。
0262245
2007/05/02(水) 04:31:02ID:???(?!<\/TAG>) はわかりました
((?:(?!<\/TAG>).)*?) の *?は最短マッチですよね。
?:と(?!<\/TAG>)の後ろのドットの役割が説明聞いてもいまいちわからんですね。。。。
preg_match("/<TAG>(.*)*?<\/TAG>/", $html, $return);
↑これではダメでしょうか?
0263nobodyさん
2007/05/02(水) 04:35:15ID:???0264nobodyさん
2007/05/02(水) 04:36:18ID:???0265nobodyさん
2007/05/02(水) 05:54:44ID:???(?!hoge)は前方参照否定じゃなかたけ、否定とはちょい違う
>>262
(?!<\/TAG>)(.*?)
て書きたかったんじゃね
>>264
どうしてそこにドットが出るのかがわからない、と聞いているんだろ
常識的に考えて
0266nobodyさん
2007/05/02(水) 06:23:43ID:???そんなことも分からないってことは修飾子と構文を正しく理解してないってこと。
その2つは最低限理解してから実例に入るべき。
人に教えてもらってコピーするとか改良するとかはその後。
0268208
2007/05/02(水) 07:44:06ID:e82GvhiD0269nobodyさん
2007/05/02(水) 08:08:14ID:???0270nobodyさん
2007/05/02(水) 08:46:10ID:UK9OmFrQGETmethodで情報を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:???0272nobodyさん
2007/05/02(水) 08:51:03ID:UK9OmFrQすみません、書き間違いがありました
「」 と表示されました(270の時点で)
271さんの言うとおりにしても、「」のまま変わりません
なぜ??
0273nobodyさん
2007/05/02(水) 08:55:03ID:jXkSXyAxだからじゃね
0274nobodyさん
2007/05/02(水) 08:56:00ID:???■ このスレッドは過去ログ倉庫に格納されています