【PHP】下らねぇ質問はここに書き込みやがれ 43
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/01(日) 04:21:50ID:VGqlLhlDPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0307300
2007/04/04(水) 23:57:27ID:???0308nobodyさん
2007/04/04(水) 23:58:25ID:???$b = $a++;
これで$bが3だから驚いた
0310nobodyさん
2007/04/05(木) 00:01:50ID:???いや、マニュアルだと!の方が高かったんだけど、
それだと>>248の書き方は文法的におかしくない?
実際やってみたら動いたわけだけど、何か見落としてる?
0311nobodyさん
2007/04/05(木) 00:09:24ID:???if(!$a = intval($b)){
$a = 0;
}
【$A = $B】
$Bを$Aに代入する
【$A = "a"】
$Aはaである
【!$A = "a"】
$Aはaではない
これで理解しろ
0312nobodyさん
2007/04/05(木) 00:10:39ID:???見落としてると思う。
第十五章
>注意: ! は = よりも優先されるはず なのにもかかわらず、
>PHP は依然として if (!$a = foo()) のような式も許します。この場合は foo() の出力が $a に代入されます。
0313nobodyさん
2007/04/05(木) 00:11:45ID:???if(!$a = intval($b)){
$a = 0;
}
$bの値が整数だったばあいいif分の中身が実行されるが、
$bになにも格納されてなかったら動かないぞ
0317nobodyさん
2007/04/05(木) 00:15:05ID:???ほんとだ、見落としてた。
というとつまり、!$a = $b みたいな形の式のみ特例的に=の方が優先順位が高くなる、ってことか。
それはちょっと・・・どうよ?
0318312
2007/04/05(木) 00:20:53ID:???英文だと
if (!$a = foo()), in which case the return value of foo() is put into $a.
となってるから、!$a=$bじゃなくて、関数の返し値の代入に限ってって感じだと思うよ。
つまり関数の方の動作を優先するってことなんだろうなあ。
0319nobodyさん
2007/04/05(木) 00:21:44ID:???0321nobodyさん
2007/04/05(木) 00:29:04ID:???0322312
2007/04/05(木) 00:36:05ID:???みたいだね。
$a = 1;$b = 0;
if(!$a = $b) {
echo $a;
}
で 0 が出力結果になるな。
0323301
2007/04/05(木) 00:47:30ID:???とりあえず改行を無視して
$html = '<table><tr><td>→<table><tr><td>これを取得する</td></tr></table>←</td></tr></table>';
preg_match("[(<table>.*?</table>)]", $html, $array);
print_r($array);
とやってみました
イメージとしては $array[0]に$html全体が
$array[1]に→この部分←が入るような形になればありがたいのですが…
0324nobodyさん
2007/04/05(木) 00:58:55ID:???ネストをきれいに表現してる正規表現のサンプル見たことあるな。
元レスから判断するけどn番目のテーブル全体が欲しいんだったら
対応する括弧を見つけるロジックでいいんじゃないのか。
0326301
2007/04/05(木) 01:29:36ID:???正規表現は前に何度も躓いていますし、なんか自分でも無理かと…
324さんと325さんのおっしゃってる意味は同じと考えていいのでしょうか?
対応する括弧を見つけるロジック = 再帰
なんでしょうか???
実はファイル(ディレクトリ)操作を勉強している時に「再帰」が出来てきて
理解を頓挫したことがあります(都合のいいサンプルをそのまま使いました…)
階乗で解説してあるサイトなどで勉強してみましたが、今回のケースに
当てはめることが全く出来ません
もしよろしければヒントでもいただけないでしょうか?
0327nobodyさん
2007/04/05(木) 02:48:53ID:???0328nobodyさん
2007/04/05(木) 03:28:47ID:???tableタグの数をカウントアップ、閉じるタグでカウントダウンして、ゼロになってところで間の要素を再帰で同じ処理すればいいんじゃないか?
0330nobodyさん
2007/04/05(木) 04:03:17ID:???0331nobodyさん
2007/04/05(木) 04:22:53ID:???0332nobodyさん
2007/04/05(木) 10:01:00ID:???function htmlspecialcharsplus($value)
{
// サニタイズして出力します
echo htmlspecialchars($value);
}
0334nobodyさん
2007/04/05(木) 10:32:46ID:???そういうのは、htmlをxml文書として扱いましょう。
自分ならPEARのXML_Serializeクラスつかうけど。
0336nobodyさん
2007/04/05(木) 12:47:31ID:???対象htmlファイルの構造が常にいっしょ
もしくは、tableタグに必ずidがついてる
みたいな条件下じゃないとどこかで再帰的な手法が必要になるんじゃないかな。
0338nobodyさん
2007/04/05(木) 13:01:20ID:???送られてきた指定した画像のサイズを変え保存するにはどうしたらいいでしょうか?
GD入れないとダメすか?
また、保存する場所ですがDBにいれるか、ファイルを置くディレクトリを設置するか迷っています。
DBに入れた場合、DBの動作(SELECTなどの)は遅くなりますか?
0339nobodyさん
2007/04/05(木) 13:18:45ID:ln1txq/N誰か教えてくださいお願いします。
ちなみにOSはWiiiiiinXP
今のところのエラーはメールこねーy+文字化け杉
文字コードの設定とかkwskおしえてほしす
0341>339
2007/04/05(木) 13:36:29ID:???落としてきたPHPの設置方法はうpするだけと書いてあるんですが
うpしてもロカルでも動かないので何か要るのかしらと思って悩んでます。。
一応持ってるだけなんですがアパチ2とPHP5はおいてある。
でも使い方とかはHello World+print、echo止まりだから全然わかりまてん
0342nobodyさん
2007/04/05(木) 13:44:53ID:???0343nobodyさん
2007/04/05(木) 13:45:50ID:???0344nobodyさん
2007/04/05(木) 13:48:16ID:???0345nobodyさん
2007/04/05(木) 13:50:03ID:???0346nobodyさん
2007/04/05(木) 13:50:21ID:ln1txq/Nえと、うp自体はPHP可レンタル鯖にうpしてるんだけどSMTP鯖起こさないといけないんですか?
>343
すまんかった
Proです
0347nobodyさん
2007/04/05(木) 13:52:39ID:???日本語で話して下さい
0348nobodyさん
2007/04/05(木) 13:54:39ID:???0349nobodyさん
2007/04/05(木) 14:06:10ID:???0350nobodyさん
2007/04/05(木) 14:09:03ID:ln1txq/N配布スクリプトくらいうpして動かせてよ・・・
0351nobodyさん
2007/04/05(木) 14:18:30ID:???意味が分からない
0352nobodyさん
2007/04/05(木) 14:28:45ID:???使っている人、やっぱり格段に効率化できました?
入力データ検証とかみると便利そうだなと思いますが、
それ以外で効果抜群だった点など教えてください。
0353nobodyさん
2007/04/05(木) 14:29:12ID:???0354nobodyさん
2007/04/05(木) 14:34:37ID:ln1txq/Nhttp://php.eweb-design.com/1301_mail.html
0355nobodyさん
2007/04/05(木) 14:37:28ID:???mysqlでの文字コードの関係が
ごちゃごちゃしてて理解できずにいるんですが、
詳しいサイトないでしょうか?
phpのソースをUTF8で書いて、
MySQLの文字コードがEUC固定の場合に、文字化けを発生させないようにできるんでしょうか?
0356nobodyさん
2007/04/05(木) 14:39:28ID:???0357355
2007/04/05(木) 14:45:26ID:???PHPで挿入したデータが自動的にEUCに変換され保存される、ということでしょうか?
例えば、UTF8のスクリプトからMySQLにデータ挿入しても
EUCで保存され、
UTF8のスクリプトで読み込む場合、読み込んでから
UTF8に変換して出力する、みたいな感じでしょうか?
0358nobodyさん
2007/04/05(木) 14:46:06ID:ln1txq/Nんで、ApacheにDLしたPHP置いてみた。
ドリームウイーバで送信先メールアドレスだけ書き換えた。
Fatal error: Call to undefined function mb_convert_encoding() in C:\Program Files\Apache Group\Apache2\htdocs\sendmail.php on line 148
0359339
2007/04/05(木) 14:46:53ID:???0360nobodyさん
2007/04/05(木) 14:58:52ID:???$str = "あいうえお";
$str = mb_convert_encoding($str, "euc-jp", "utf8");
0361nobodyさん
2007/04/05(木) 15:05:02ID:???extension=php_mbstring.dll
php.iniに↑みたいな設定がWinだといるらしい
そのエラーメッセージでググったらぞろぞろでるぞ
0362nobodyさん
2007/04/05(木) 15:07:36ID:???>>このフォームは、"sendmail"のみに対応しています。
おまえの使ってるレンサバがsendmailに対応してるのか確認。
誰も答えるやつがいなかったらおれがこたえてやるがいまから仕事だから遅くても怒るなよよ。
0363nobodyさん
2007/04/05(木) 15:20:00ID:ln1txq/Nそれは多分初期設定時に
;extension=php_mbstring.dllをextension=php_mbstring.dll
になおせって説明かと。。
>362
ロカルでもむりなん?
鯖設定みてくる
0364339
2007/04/05(木) 15:24:11ID:ln1txq/N書いてない悪寒…
http://muryo-de.etowns.net/
別に試しにうpできたらいいんでsendmail対応書いてある鯖探すかsendmail使わないサンプル探したほうがいいのかしらん
0366虚弱PHP
2007/04/05(木) 15:44:45ID:???> PHPで挿入したデータが自動的にEUCに変換され保存される、ということでしょうか?
MySQL4.1以降だとそうなるはず。
だけど、化けまくる場合が多いので、MySQL4.1以降の場合は
skip-character-set-client-handshake設定して、
自分でちゃんと文字コード管理するのがよさげ。
個人的には全部UTF-8にした方がいいと思うけど。
適当に検索したら、以下のページでMySQL&PHP連携での文字コードの話が書いてあった。
http://puchiko.lowtech.ne.jp/?itemid=349
0367nobodyさん
2007/04/05(木) 15:49:15ID:ln1txq/Nアカンがなwwwww
対策練ってくる・・・orz
0369339
2007/04/05(木) 15:52:18ID:???場所が借りれたらいいと思った。今は反省していない。
0370虚弱PHP
2007/04/05(木) 16:13:19ID:???http://muryo-de.etowns.net/php.php
0371nobodyさん
2007/04/05(木) 16:13:51ID:???設定で、どうにでもできる自由度を理解してないだけと思われ。
PHP側でMySQLの設定にあわせて文字変換してもいいし
MySQL側の設定で、MySQL側の変換を無効にしたりとか
PHPに合わせてデータを渡したっていいし、オマイの好きに
出来るよってところかな。
PHPとMySQLの文字変換の関係って言われても
答えとしては、自分がPHPとMySQLでやろうとしてることに
一番いい設定を選べばエエやん?って感じ。
0372339
2007/04/05(木) 16:20:25ID:ln1txq/N逃げに走って、sendつかわなくていいフォームさがしてう
0373nobodyさん
2007/04/05(木) 16:35:54ID:???簡単にする方法はないでしょうか?
0374nobodyさん
2007/04/05(木) 16:35:56ID:???>だけど、化けまくる場合が多い
これの原因の多くが使ってるmysqlクライアント側文字コードが
デフォルトは「latin1」と設定されてるから。
PHPでEUC-JPやUTF-8に変換してデータ送っても
MySQLサーバの方ではクライアントはlatin1で送るよと表明しているから
latin1→サーバ側に指定された文字コードに変換する。
latin1と思って日本語扱えば、そりゃ文字化けは必至。
だからクライアントの起動オプション、ライブラリならビルド時に指定するか
SET NAMESで「これからクラアントは○○で送るよ」とサーバに教えてやらないと駄目
http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html
PHPやMySQLの公式ビルドもののクライアントライブラリも「latin1」と設定されてる。
# RHEL系はUTF-8になってるのかね。
まあ自分も
>skip-character-set-client-handshake設定して、
>自分でちゃんと文字コード管理するのがよさげ。
こっち
0375あきら
2007/04/05(木) 16:40:24ID:jUd/uPxecreate table kaiin (kaiin_code varchar(6),
kaiin_name varchar(20),
nyukai_ymd varchar(10),
kigen integer,
primary key (kaiin_code));
nyukai_ymd は 日付を表現する文字型のカラム
kigen は 有効期限で1から12(nヶ月)
有効期限切れの会員の検索
入会日(nyukai_ymd) < 今日(2007-04-05)から遡ってkigenヶ月
select * from kaiin where
nyukai_ymd < to_char(to_date('2007-04-05', 'YYYY-MM-DD') - interval 'kigen month', 'YYYY-MM-DD');
ERROR: Bad interval external representation 'kigen month'
と言うエラーが.....!
intervalでカラム(kigen)を使う方法を教えてください。
宜しくお願いします。
0376355
2007/04/05(木) 16:43:30ID:???>>371
>>374
レスありがとうございます。
>MySQL4.1以降だとそうなるはず。
つまり4.1以降のクライアント側の文字コードがEUCに設定されている場合、の話ですよね。
では、4.0以前のサーバー側の文字コードって何の意味を成しているのでしょうか?
0379nobodyさん
2007/04/05(木) 16:46:08ID:Y4vj6k1c今まで無料鯖で自作ブログみたいなのをつくってましたが、今回SSLが使えて広告もない鯖をタダで
使えるようになりました。そこで特にその必要はないのですが、あるならやっぱ使いたいのでコメント
やユーザー情報の入力はセキュアな状態で行うように改造したいと思ってます。
そこで質問なんですが、サイトのアドレスはhttp://mydomain.xxx.xxx/で、SSLはhttp://secure.xxx.xxx
というサブドメインでしか使えなくなってます。鯖は同じなのでmydomainで使ってるサイトの外見テンプ
レートをsecureから参照したいのですが、どうすればいいのかわかりません。
例えば、mydomain/tpl/tpl.phpといったテンプレートファイルをsecure/index.phpから参照するにはどう
すればいいですか?
日本語怪しかったらスミマセン
お願いしまッス!
0380339
2007/04/05(木) 16:46:37ID:ln1txq/Nhttp://0web.cjb.net/
うごく・・・し、送れるんだけど鰓がでるお。。
Notice: Undefined variable: err_message in
0381あきら
2007/04/05(木) 17:01:57ID:jUd/uPxeFreeBSD 5.3
Apache/1.3.37
php 4.4.4
postgresql 7.3.15
実際は
$today = date("Y-m-d");
$result = pg_Exec($conn,"select * from kaiin where nyukai_ymd < to_char(to_date('$today', 'YYYY-MM-DD') - interval 'kigen month', 'YYYY-MM-DD');");
です。
宜しくお願いします。
0382nobodyさん
2007/04/05(木) 17:04:36ID:???Warning: Smarty error: unable to read resource: "menu.tpl" in C:\php\include\SMARTY\libs\Smarty.class.php on line 1095
正直Smartyにエラーが出るなんて想像もしてなかった
1000行も見返して問題チェックなんてする気にならないというか、
変にいじったら予想外の部分にまで後々障害出そうで怖いんですが、、
皆さんこういうトラブル発生しましたか?
0387あきら
2007/04/05(木) 17:12:49ID:jUd/uPxeサーバーサイドプログラミング関連の話題を扱っています。
Perl, PHP, Java, Ruby, C, Tcl といった言語処理系の話、
Apache, CGI, JSP/Servlet, ASP, ColdFusion といったアプリケーション実行環境の話、
Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。
とあったのでココでいいと思いました。
場違いでごめんなさい。
0388nobodyさん
2007/04/05(木) 17:22:10ID:???special thxxxxxxxxxxx!
なにかうろこのようなものがとれた
0390nobodyさん
2007/04/05(木) 17:38:59ID:???すみません、
「Smarty.class.php の1095行目のmenu.tplを読めない」 と書いてあるのかなと
思うんですが、、
良くわかりません
0391nobodyさん
2007/04/05(木) 17:40:32ID:???それはこの板全体の説明で、このスレッドは「PHP」の
質問スレッドだよ
PostgreSQLの話題は別のスレッドが基本
面倒だから答えるけど
エラーメッセージ見てわかるように
interval 'kigen month'
この表現がおかしいんだよ
interval の指定はこんなふうにはできない
interval '1 month' とか interval '2 month' ならできるけど
カラム名の指定は、少なくともPostgreSQL では無理
Oracleでも無理だと思うけど
0392あきら
2007/04/05(木) 17:45:14ID:jUd/uPxe大変すみませんでした。
答えてくれて有難うございました。
0393nobodyさん
2007/04/05(木) 17:46:59ID:???意訳しすぎ
勝手にコロンで区切られた文章を連結するなよ
素直に前から読んだら良いじゃないか
テンプレートファイル menu.tpl が読めなくなっているのだろ
1095 行目は実際にエラーを発行している場所であって、
そこに問題あるってわけじゃないぞ
何を触ったのかは知らないけど、テンプレートパス指定が
おかしくなったのか、menu.tplを消したかは知らないが
0394nobodyさん
2007/04/05(木) 17:48:32ID:???今後Postgresの質問するなら適切な場所へ行ってね
PostgreSQL 2テーブル目
http://pc11.2ch.net/test/read.cgi/php/1047317680/l50
DB@2ch
http://pc11.2ch.net/db/
0396nobodyさん
2007/04/05(木) 18:00:08ID:???その再帰手法を個別に書かないで、XMLとして処理すればいいんだよ。
<table と </table> の最長一致文字列を探したあとは、それをXML処理にゆだねればいい。
その場合おっしゃるidなどの要素内属性記述は、逆に邪魔になるからそれを消して渡す。
0397338
2007/04/05(木) 18:21:18ID:???無視されるのは大嫌いなんだ!
0398nobodyさん
2007/04/05(木) 18:48:58ID:???質問者はID出せよ
GD入れなくてもできる
バイナリデータをいじくって、なんらかのフォーマットの
画像データを出力するスクリプトが書けるのなら
そんなのがいやらなら、GD入れるなり、ImageMagick使うなり
したらいい
バイナリデータをDBに登録するかどうかは、その案件しだい
としか言いようがない
selectで遅くなるとは普通考えられないが、これは
DBの仕様次第だろう
0399379
2007/04/05(木) 18:49:27ID:Y4vj6k1cノシ
0400nobodyさん
2007/04/05(木) 18:54:44ID:???同じサーバにあるのなら、何も悩むことなく読み込めるだろう
パスの指定は、ドメインとは関係ないのだから
テンプレートだろ?画像じゃなくて
画像であっても、シンボリックリンクでも貼れば解決するだろうけど
0401nobodyさん
2007/04/05(木) 19:14:07ID:???0402虚弱PHP
2007/04/05(木) 20:07:19ID:???PHP5なら array_walk_recursive が使えるよ。
再帰的に負う必要がないなら、array_walkでOK。
こっちはPHP4でも使える。
0403虚弱PHP
2007/04/05(木) 20:12:16ID:???Linuxなら明示的に指定しない限り、GD付属してたとおもったけど。
Windowsならphp.iniでコメント外すだけ。
■ このスレッドは過去ログ倉庫に格納されています