- 1 名前:nobodyさん mailto:sage [2008/11/22(土) 06:36:02 ID:???]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 PHP使いが優しくコメントを返しますが、 お礼はPHPの布教と初心者の救済をお願いします。 PHP Home Page www.php.net/ jp.php.net/ くだすれPHP(超初心者用)4 pc11.2ch.net/test/read.cgi/php/1213356756/ 適当に関連スレ(マルチはだめぽ) 【PHP】下らねぇ質問はここに書き込みやがれ 69 pc11.2ch.net/test/read.cgi/php/1211879073/
- 654 名前:nobodyさん mailto:sage [2009/02/01(日) 22:42:37 ID:???]
- ググってたら遅くなりました
>>652 matchに漏れがなければ問題ないように思たんですが あげてもらった関数の方が確実 でしょうか >>653 正規表現はまだよくはわかってないのですがググったところ \r\nのことでしょうか。 scripting.cocolog-nifty.com/blog/2008/12/post-c9b4.html ここを参考に一応"/^\d{8}\r?$/"としてみましたが >hoge$に掛かりません の理屈が今一わかりません。
- 655 名前:650 mailto:sage [2009/02/01(日) 22:56:05 ID:???]
- よく考えたら\rが混じる時点で正常なデータではないので
もとの"/^\d{8}$/"で問題なしな気がしますがどうなんでしょう
- 656 名前:652 mailto:sage [2009/02/01(日) 23:22:37 ID:???]
- 重視したのは分かりやすさ。正規表現だと、何を意味しているのか分かりづらい。
パターンがよほど複雑な時以外は正規表現は避けたほうがいい。 >653-654 改行とか忘れてたわ。 if(preg_match("/^\d{8}$/", "12345678\n")){ echo 'match'; }
- 657 名前:nobodyさん mailto:sage [2009/02/03(火) 00:43:02 ID:???]
- 半年ロムってろと言われてずっと見てきたが
もうPHP諦めることにした。さっぱり分からん。 このスレのどこが超初心者用なんだ。
- 658 名前:nobodyさん mailto:sage [2009/02/03(火) 01:51:58 ID:???]
- 3年ROMってろ
- 659 名前:nobodyさん mailto:sage [2009/02/03(火) 02:00:14 ID:???]
- もう、諦めたんだ放って置いてくれw
プログラムなんて嫌いだ。
- 660 名前:nobodyさん mailto:sage [2009/02/03(火) 09:47:26 ID:???]
- 何が分かんないんだよ
- 661 名前:nobodyさん mailto:sage [2009/02/03(火) 10:34:27 ID:???]
- 放っておいてやれよ
- 662 名前:nobodyさん mailto:sage [2009/02/03(火) 14:10:58 ID:???]
- なんか残念だな...。
このスレだけ読み続けても、超初心者が分かるようにはならないと思う。 このスレは、超初心者も質問していいというだけで、来る質問が全部、 超初心者向けというわけではないから。 もう見てないかもしれないけれど、入門書を図書館とかで借りてきたほうが いいと思うよ。
- 663 名前:nobodyさん mailto:sage [2009/02/03(火) 14:18:03 ID:???]
- PHPなんってググって触ってみりゃ、どうにでもなるものを、
半年もROMってわからないなんて、ネタに決まってるだろ もしネタじゃないなら、10年はROMるべき。 そうして人生が終わるさ
- 664 名前:nobodyさん mailto:sage [2009/02/03(火) 20:28:48 ID:???]
- 人生も諦めたらスッキリするのに
- 665 名前:nobodyさん mailto:sage [2009/02/04(水) 06:33:54 ID:???]
- >>664
全く原因が分からないのでお聞きしたいのですが… $im=createimagefromjpeg(image.jpg); imagejpeg($im); destroy 上記の様な単純な記述で画像を開きたいのですが、 ローカルならできるのになぜかインターネット経由だと できないのです… 実行すると半角で「リ」と表示されるだけで print hoge;などを付け足しても何もかわりません phpinfoでGDが使えることは確認したのですが、 他に原因が思いつきません 初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします
- 666 名前:nobodyさん mailto:sage [2009/02/04(水) 06:34:18 ID:???]
- >>664
全く原因が分からないのでお聞きしたいのですが… $im=createimagefromjpeg(image.jpg); imagejpeg($im); destroy 上記の様な単純な記述で画像を開きたいのですが、 ローカルならできるのになぜかインターネット経由だと できないのです… 実行すると半角で「リ」と表示されるだけで print hoge;などを付け足しても何もかわりません phpinfoでGDが使えることは確認したのですが、 他に原因が思いつきません 初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします
- 667 名前:nobodyさん mailto:sage [2009/02/04(水) 06:50:26 ID:???]
- image.jpgがないんでね?
- 668 名前:nobodyさん mailto:sage [2009/02/04(水) 08:17:43 ID:???]
- >>666
MIMEヘッダー出してる?
- 669 名前:nobodyさん mailto:sage [2009/02/04(水) 10:03:22 ID:???]
- ああそれだな
- 670 名前:nobodyさん mailto:sage [2009/02/04(水) 17:18:03 ID:???]
- >>667
確かにファイルは存在しています・・・ >>668 MIMEヘッダーは header("content-type: image/jpeg"); で出力できてますでしょうか? ご指摘の後にこれを追加してやってみてのですがだめでした。 ただ、文字化けのような表示から画像を表示できていないマーク? のような表示にはかわりました・・・
- 671 名前:nobodyさん mailto:sage [2009/02/04(水) 17:25:29 ID:???]
- >>670
imagecreatefromjpeg にしてみたら? それで、$imがfalseになってないかチェック それから、imageやheaderを出力する前に余計な出力をしないように、ソースの冒頭でob_startして、直前で破棄
- 672 名前:nobodyさん mailto:sage [2009/02/04(水) 17:39:12 ID:???]
- ところで皆さんPHPとMYSQLは勉強し始めて
どれくらいの期間で使えるレベルになりましたか?
- 673 名前:nobodyさん mailto:sage [2009/02/04(水) 17:41:17 ID:???]
- 使うだけなら書籍読みつつ1日でカバーできる範囲
使いこなすまでは相当かかったが
- 674 名前:nobodyさん mailto:sage [2009/02/04(水) 17:50:34 ID:???]
- >>670
「image.jpg」→「"image.jpg"」
- 675 名前:nobodyさん mailto:sage [2009/02/04(水) 18:10:51 ID:???]
- "imagejpg"になってたりするのか
- 676 名前:nobodyさん mailto:sage [2009/02/04(水) 18:32:32 ID:???]
- そもそもcreateimagefromjpegなんて標準関数はないわけだが
imagecreatefromjpeg(string $filename)ならあるけど
- 677 名前:nobodyさん mailto:sage [2009/02/04(水) 18:33:11 ID:???]
- 単純にサーバにGDライブラリがはいってないだけなんじゃね?
phpinfoみてみれ
- 678 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:31 ID:???]
- >>677
>>666
- 679 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:52 ID:???]
- >>676
>>671
- 680 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:31 ID:???]
- 書いたとおりに載せないで情報小出しにしてる時点でもう答えようがない
- 681 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:39 ID:???]
- 要するに釣り
- 682 名前:666 mailto:sage [2009/02/04(水) 20:04:43 ID:???]
- お騒がせ致しました
釣りではないのです 広告自動表示のレンタルサーバーを使用していたためにうまくいかなかったようです 広告無しのサーバーでは問題なく表示できました。 ありがとうございました
- 683 名前:nobodyさん mailto:sage [2009/02/04(水) 22:08:23 ID:???]
- 広告自動挿入のサーバーだと
ヘッダー情報ってだめなの?
- 684 名前:nobodyさん mailto:sage [2009/02/04(水) 22:09:01 ID:???]
- PHPの講師やりたいんだけど、
どこの学校がおすすめ?
- 685 名前:nobodyさん mailto:sage [2009/02/04(水) 22:31:36 ID:???]
- 学校行ってまでPHP学びたいと思うか?
- 686 名前:nobodyさん mailto:sage [2009/02/04(水) 22:37:41 ID:???]
- >>685
だって一日で20万もらえるってよ バカらしくてコーダーなんかやってられないよ
- 687 名前:nobodyさん mailto:sage [2009/02/04(水) 22:41:25 ID:???]
- SQL(SQLite)なんですが単対多のデータを取得したら
|A|a|1| |A|a|2| |A|b|1| |A|b|2| |B|c|1| |B|d|1| みたいになるじゃないですか。 重複した項目をまとめて(A,(a,b),(1,2)),(B,(c,d),1)な感じにする関数てあるんでしょうか。
- 688 名前:nobodyさん mailto:sage [2009/02/04(水) 22:46:57 ID:???]
- >>685
pdoj.wordpress.com/2009/02/04/fetch-modes/ とりあえず翻訳やってみたけど、どう?
- 689 名前:nobodyさん mailto:sage [2009/02/04(水) 22:50:36 ID:???]
- >>687
pdoとかMDBとかにあるよ sqliteは知らんけど
- 690 名前:nobodyさん mailto:sage [2009/02/04(水) 22:52:37 ID:???]
- >>688
ドキュメントの翻訳で「〜と思う」なんて普通使わない
- 691 名前:nobodyさん mailto:sage [2009/02/05(木) 00:20:18 ID:???]
- >>689
ありがとうございます。 探したらfetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)がそれらしいです。 ただマニュアルの例で例えると array(3) { ["apple"]=> array(2) { [0]=> string(5) "apple" [1]=> string(5) "apple" } みたいな感じにカラム0の値しか取得できてないようです。 自分がどこか間違ってるのかSQLiteが対応してないのか... もう少し試してみます。
- 692 名前:nobodyさん mailto:sage [2009/02/05(木) 00:47:17 ID:???]
- >>691
ほい jp2.php.net/manual/ja/pdostatement.fetchall.php
- 693 名前:nobodyさん mailto:sage [2009/02/05(木) 00:49:12 ID:???]
- $str = '4,980 円';
↑みたいなフォーマットの価格データを整数値にしたいんだけど ↓よりシンプルにやる方法ってある? $str = str_replace(array(' ', ',', '円'),array('', '', ''),$str);
- 694 名前:nobodyさん mailto:sage [2009/02/05(木) 00:51:20 ID:???]
- $str = (int)str_replace(',','',$str)
- 695 名前:nobodyさん mailto:sage [2009/02/05(木) 00:54:43 ID:???]
- ありがとうg
- 696 名前:nobodyさん mailto:sage [2009/02/06(金) 21:22:00 ID:???]
- >>692
MySQLでも試してみたのですが結果は同じでサンプルのような結果にならないのですが どこか捉え違いしているのでしょうか。 PHP 5.2.6/MySQL 5.0.4 |apple|red| |banana|yellow| |apple|green| という内容として、 $dbh = new PDO('mysql:〜','root','root');//もしくは'sqlite:〜' $sql = "SELECT name,color FROM table1"; $sth = $dbh->prepare($sql); $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0); var_dump($result); $stmt = null; 結果 array(2) { ["apple"]=> array(2) { [0]=> string(5) "apple" [1]=> string(5) "apple" } ["banana"]=> array(1) { [0]=> string(6) "banana" } } となります。
- 697 名前:nobodyさん mailto:sage [2009/02/06(金) 21:29:26 ID:???]
- サンプルのような結果と言われても、サンプルのような結果がどんなもんだかわからんからね。
とりあえず、FETCH_GROUPなんだし、結果が正しいように思うが?
- 698 名前:nobodyさん mailto:sage [2009/02/06(金) 21:34:36 ID:???]
- まぁ、試しに
PDO::FETCH_COLUMN|PDO::FETCH_GROUP じゃなく PDO::FETCH_ASSOC|PDO::FETCH_GROUP にしてみたら?
- 699 名前:nobodyさん mailto:sage [2009/02/06(金) 21:39:06 ID:???]
- >>697
失礼、サンプルは>>692にもあるPDOStatement->fetchAllの例3です。 期待した結果は ["apple"]=> array(2) { [0]=> string(5) "red"... なんですが、>>696が正しいということはやっぱりなにか勘違いしてるのかなぁ
- 700 名前:nobodyさん mailto:sage [2009/02/06(金) 21:43:25 ID:???]
- あぁそれか、fetchAllの第2引数に0が入ってるじゃん、だから、カラムが制約されてる
それ、外したらどうなる?
- 701 名前:nobodyさん mailto:sage [2009/02/06(金) 21:48:42 ID:???]
- array(2) {
["apple"]=> array(2) { [0]=> string(3) "red" [1]=> string(5) "green" } ["banana"]=> array(1) { [0]=> string(6) "yellow" } } になったけど
- 702 名前:nobodyさん mailto:sage [2009/02/06(金) 21:49:22 ID:???]
- ああすまん本人じゃなくて俺の環境でやったらってことね
- 703 名前:nobodyさん mailto:sage [2009/02/06(金) 22:07:01 ID:???]
- >>700
あれ?どうも。0がなくてもうまく取得できなかった気がしたんですが 今0を外したらPDO::FETCH_ASSOC|PDO::FETCH_GROUP同様うまくいきました。 |PDO::FETCH_GROUPがついたときは第2引数で指定したPDO::FETCH_COLUMNを基準に グループ化するのかと勘違いを… 実際は複数のカラムが必要なのでPDO::FETCH_NUM|PDO::FETCH_GROUPで 思った通りの結果が得られるようになりました。ありがとうございました。 >>701も確認ありがとうございます。
- 704 名前:nobodyさん mailto:sage [2009/02/06(金) 22:11:15 ID:???]
- fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0); で普通に取得できたが?
後進のために原因を明らかにしといてくれ
- 705 名前:nobodyさん mailto:sage [2009/02/06(金) 22:21:43 ID:???]
- >>704
もし、第2引数に0が入ってても第2カラムを取得できたんならバグだと思うよ
- 706 名前:nobodyさん mailto:sage [2009/02/06(金) 22:26:54 ID:???]
- お前は何をいっちょるんだ?
第2引数に0を入れるということは1番目のCOLUMNを用いて残りのカラムをGROUP化するってことだぞ
- 707 名前:nobodyさん mailto:sage [2009/02/06(金) 22:29:53 ID:???]
- >>778
何も問題ないが
- 708 名前:nobodyさん mailto:sage [2009/02/06(金) 22:30:55 ID:???]
- すまん誤爆した
- 709 名前:nobodyさん mailto:sage [2009/02/06(金) 22:57:48 ID:???]
- >>706
デマ書いてすまん、よくわかってなかった。 そのはずだよねぇ。
- 710 名前:nobodyさん mailto:sage [2009/02/08(日) 19:09:17 ID:???]
- <?php
try { function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler("exception_error_handler"); fntest(); function fntest() {echo "call function";} } catch (ErrorException $exception){ echo "何かエラーだよ<br />"; echo $exception->getMessage()."<br />"; echo "line:".$exception->getline(); exit(); } ?> これを実行するとFatal error: Call to undefined function fntest() in〜と出ます 定義を先にするかtry〜catchをなくすとエラーは出ません 何がいけないんでしょうか
- 711 名前:nobodyさん mailto:sage [2009/02/08(日) 19:26:17 ID:???]
- 定義が後でtry〜catchの中だからでは?
- 712 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:14 ID:???]
- >>711
まんまやん というかだめなんですか? >次の二つの例のように、ある条件下でのみ関数が定義される場合には、その関数定義は関数がコールされる前に行われていなければなりません。 に当てはまるということでしょうか とりあえずそういうものだということで前方で定義するようにします
- 713 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:15 ID:???]
- >>710
いったいどうしたらそういう書き方ができるのか知りたいわ
- 714 名前:nobodyさん mailto:sage [2009/02/08(日) 20:35:03 ID:???]
- Perlから入った奴なんかはそういう書き方をする事があるな。
Perlは書き方によっては、関数の宣言や定義より先に呼び出しが来てもちゃんと動く。
- 715 名前:nobodyさん mailto:sage [2009/02/08(日) 21:05:08 ID:???]
- PHPだって、パース対象がグローバルなら、普通にfunctionの後置定義は有効だよ。
ifやwhileやtryやfunctionの中などの節の中は後置できないだけ。 >>710なんてそんなの百も承知で釣り質問してるに決まってるだろ。 釣られてへぼい回答してんじゃねぇぞ
- 716 名前:nobodyさん mailto:sage [2009/02/08(日) 21:07:39 ID:???]
- ツン?
- 717 名前:nobodyさん mailto:sage [2009/02/09(月) 00:04:48 ID:???]
- PHPとMySQLで学習用のWEBシステムを作っているのですが
' % 等のDBにとっては迷惑な文字列が入力された場合に、それとHTML上の特殊文字に変換する にはどうすれば良いですか? 簡単な掲示板を作ったのですが' %が入力された場合にエラーが発生し困っています。
- 718 名前:nobodyさん mailto:sage [2009/02/09(月) 00:12:47 ID:???]
- 基礎中の基礎すぐる
- 719 名前:nobodyさん mailto:sage [2009/02/09(月) 08:41:31 ID:???]
- >>717
mysql_real_escape_string addslash
- 720 名前:nobodyさん mailto:sage [2009/02/09(月) 08:53:51 ID:???]
- addslash ? syntax error
- 721 名前:nobodyさん mailto:sage [2009/02/09(月) 09:16:28 ID:???]
- データーベースにデーターをつっこむ直前に
データーベース専用のエスケープ処理をするのが普通
- 722 名前:nobodyさん mailto:sage [2009/02/09(月) 09:20:54 ID:???]
- データー(笑)
- 723 名前:nobodyさん mailto:sage [2009/02/09(月) 21:42:26 ID:???]
- >717
使える箇所ならプリペアドステートメント。これが一番安全。 ttp://jp2.php.net/manual/ja/mysqli.prepare.php ttp://jp2.php.net/manual/ja/pdo.prepare.php 使えない箇所ならmysql_real_escape_stringなど。 どの文字が危険かはDBによって違うので、MySQLにはMySQLの、OracleにはOracleの、SQLiteにはSQLiteの専用の関数がある。
- 724 名前:nobodyさん mailto:sage [2009/02/11(水) 12:21:22 ID:???]
- htmlの<base>のようにユーザのトップディレクトリを指定したいんですが、
ユーザのトップディレクトリを調べる方法はありますか?
- 725 名前:nobodyさん mailto:sage [2009/02/11(水) 13:56:50 ID:???]
- 環境は?OSとか
- 726 名前:nobodyさん mailto:sage [2009/02/11(水) 14:12:44 ID:???]
- >>725
ああすみません。 開発環境はPHP5.2.6でOSXなんですがWebサーバはまだ借りてないのでどうなるかはわかりません。 PHP5でApachサーバのところを借りようとは思ってます。 なので開発環境との違いや引っ越し時のことを考えて汎用的な関数がないかと質問しました。 一応マニュアルのファイルシステム関数は目を通したんですが…
- 727 名前:nobodyさん mailto:sage [2009/02/11(水) 14:24:23 ID:???]
- exit()ってスクリプト終了のために多用してもいいのでしょうか?
たとえばエラーチェック時にdieの代わりに自作関数呼び出して終了みたいな場合など function return_json($flag, $data){ if($flag == true) $result = $data; else $result = "ERR:".$data; $res = array( "status" => $flag, "result" => $result ); print(json_encode($res)); exit(); } if(エラーチェック1) return_json(false,"エラー1です"); //エラーなら終了 if(エラーチェック2) return_json(false,"エラー2です"); //エラーなら終了 //最後に return_json(true,"成功です。");
- 728 名前:nobodyさん mailto:sage [2009/02/11(水) 14:33:34 ID:???]
- 別にいいんでは?
- 729 名前:nobodyさん mailto:sage [2009/02/11(水) 15:13:35 ID:???]
- 関数はあくまで何かを返すだけにして、制御を握っているのは「メインのルーチン」ひとつにした方がいい。
あちこちの関数で好き勝手に処理を中断したり画面出力してたりすると、そのうち管理しきれなくなる。 同じ理由で、printするよりは文字列を返す(printは「メインのルーチン」で行なう)方がいいと思う。 俺ならreturn_json()はjsonを返すだけ(exitもprintもしない)にして function generare_json(){ if(isError1()){ return return_json(false,"エラー1です"); } if(isError2()){ return return_json(false,"エラー2です"); } return return_json(true,"成功です。"); } とし、echo generate_json()を最後に呼び出す。 exit()はスクリプトの末尾のみ、出力はこの文のみになる。
- 730 名前:nobodyさん mailto:sage [2009/02/11(水) 15:20:37 ID:???]
- つうか、正しいjson出力とエラー出力を別の関数にするかな。
boolを渡すより、return_error_json()の方が分かりやすい。
- 731 名前:nobodyさん mailto:sage [2009/02/11(水) 15:23:03 ID:???]
- >>719
ヒントをサンクス。 >>723 詳しいありがとうございます。 参考にさせて頂きます。
- 732 名前:nobodyさん mailto:sage [2009/02/11(水) 17:07:46 ID:???]
- >>726
ああもしかして、http://〜/~user/ の部分の実ディレクトリが知りたいってこと?
- 733 名前:nobodyさん mailto:sage [2009/02/11(水) 17:30:07 ID:???]
- 実ディレクトリでいいのかな?ローカルでいえば
/Applications/MAMP/htdocs/ となります。 実行ファイルがトップにあるわけではないので相対パスでのファイル指定より 基点からの絶対パスのほうがわかりやすいかなと。
- 734 名前:724,733 mailto:sage [2009/02/11(水) 17:31:27 ID:???]
- >>732
アンカーわすれてたので念のため
- 735 名前:nobodyさん mailto:sage [2009/02/11(水) 17:45:24 ID:???]
- >>733
dirname(__FILE__) とか getcwd() とか そういうこと?
- 736 名前:nobodyさん mailto:sage [2009/02/11(水) 17:47:36 ID:???]
- >>733
$_SERVER['DOCUMENT_ROOT']
- 737 名前:nobodyさん mailto:sage [2009/02/11(水) 18:00:00 ID:???]
- ユーザー関係ないじゃんw
- 738 名前:724,733 mailto:sage [2009/02/11(水) 19:15:46 ID:???]
- >>735,736
$_SERVER['DOCUMENT_ROOT']で希望のパスを得ることができました。 ありがとうございました。
|

|