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

【PHP】下らねぇ質問はID出して書き込みやがれ 98

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/09/18(土) 19:20:37ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 97
http://hibari.2ch.net/test/read.cgi/php/1279833891/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん2010/09/18(土) 19:21:19ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 96
http://pc11.2ch.net/test/read.cgi/php/1275032024/
【PHP】下らねぇ質問はID出して書き込みやがれ 95
http://pc11.2ch.net/test/read.cgi/php/1271636105/
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1266229386/
【PHP】下らねぇ質問はID出して書き込みやがれ 92
http://pc11.2ch.net/test/read.cgi/php/1263035502/
【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
【PHP】下らねぇ質問はID出して書き込みやがれ 86
http://pc11.2ch.net/test/read.cgi/php/1249042741/
0003nobodyさん2010/09/18(土) 19:22:01ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2010/09/18(土) 19:22:42ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2010/09/18(土) 19:23:24ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0006nobodyさん2010/09/18(土) 19:50:58ID:qF/0CouG
前スレ埋まってしまったので新スレ早々失礼します。
【OS名】CentOS 5.5 (32bit)
【PHPのバージョン】5.3.3
【連携ソフトウェア】Qdmail 1.2.6b
【質問内容】
問題点:メールのタイトルが特定の文字列のときに文字化けしてしまいます。
タイトルが「メール」のときは文字化けするんですが「テスト」なら文字化けしません。
タイトルが文字化けするときの文字列を本文に書くと同じく文字化けします。

どこを見直せば良いでしょうか?
ちなみに$mail->charset('UTF-8', 'base64');にしてもiso-2022-jpからutf-8になるだけで改善されませんでした。
mb_language("ja"); と mb_internal_encoding('UTF-8');も先頭に書いてみましたが同じ結果でした。

メール→文字化け / テスト→正常
あかさたなはまやらわ→正常 / アカサタナハマヤラワ→文字化け

ちなみに「あかさたなはまやらわ」のときのメールヘッダは
Subject: =?iso-2022-jp?B?GyRCJCIkKyQ1JD8kSiRPJF4kZCRpJG8bKEI=?=
ですが、
「アカサタナハマヤラワ」のときは
Subject: =?iso-2022-jp?B?GyRCZWIbKEI/GyRCZWIbKEI/GyRCZWIbKEI/GyRCZWIbKEI/GyRCZWMbKEI=?=
=?iso-2022-jp?B?GyRCNGUlb2VjXGUmJmVjGyhCPxskQmVjGyhCPw==?=
となっています。二行になって頭にTabが入っているようです。

↓のファイル自体はUTF-8で作られています。
require_once 'qdmail.php';
$mail = new Qdmail();
$mail->to('test@example.com'); // 実際はGmail宛 Yahoo宛で確かめています
$mail->subject('メール');
$mail->text('ここに本文');
$mail->from('info@example.com', '管理者');
$mail->send();
0007nobodyさん2010/09/19(日) 01:14:28ID:o0omnz79
php5.3です。
new するときのcall_user_func_array的なものってないですかね?
0008nobodyさん2010/09/19(日) 09:24:49ID:???
>>6
俺もQdメール使ってたけど、作者さんに聞いたほうが早いよ。

とりあえず俺の場合の文字化け無しのソース抜粋

// メールクラス読み込み
include('../class/qd_simple_mail.php');

$from_address = "送信元アドレス";
$from_name = ”送信者”;
$subject = 'タイトル';
$to_address = '宛先';
$content = ”本文”;
$additional = array();
$option = array(
'CHARSET_CONTENT'=>'utf-8',
// 'CHARSET_CONTENT'=>'iso-2022-jp',
// 'ENC_CONTENT'=>'base64',
);
qd_simple_mail( $to_address , null , $subject , $content , $from_address , $from_name ,$additional , $option );

こんな感じ。
俺の場合はシンプルメールのほうにしたけど、そちらの方法のやつは
ちょっと不明かも、良かったらシンプルメールにて試してみて欲しい。

#ちなみにサーバー依存しないソケット通信がしたくてそちらを選んだならごめん。
0009nobodyさん2010/09/19(日) 11:00:31ID:???
未だにフォームの値が取得できません…

何度もやり直してはいますが まったくできませんでした

サーバの文字コードはUTF-8
エンコード時の文字コードもUTF-8
index.htmlの文字コードもUTF-8
です
これで全くできないのです…自分の環境がおかしいのでしょうか
0010nobodyさん2010/09/19(日) 11:04:31ID:???
>>9
>>1
0011nobodyさん2010/09/19(日) 11:07:50ID:eIEN7Yyo
【OS名】Land.to
【PHPのバージョン】5.3
【連携ソフトウェア】なし
【質問内容】>>9
0012nobodyさん2010/09/19(日) 11:11:59ID:???
何の話
0013nobodyさん2010/09/19(日) 11:13:12ID:???
>未だにフォームの値が取得できません…
>何度もやり直してはいますが まったくできませんでした

質問内容を省略しすぎてて意味がわかりません
0014nobodyさん2010/09/19(日) 11:39:28ID:???
>>11
そのくらい推察しろよカスどもめが…とか思ってるかもしれんが、
面倒なのは仕方ないと割り切った上で落ち着いて丁寧に質問してくれ。

もしこれ以上の情報が必要ないと考えているようだと、
それはそれで大問題だ。いろんな意味で。
0015nobodyさん2010/09/19(日) 12:17:14ID:???
>>1
0016nobodyさん2010/09/19(日) 12:39:44ID:NWy7q6Wm
前スレの>>968です

index.html (文字コード UTF-8)
<html>
<head><title>New Document</title></head>
<body>
<div>
<form action="" method="post" id="test">
<input type="hidden" name="a" value="あ">
<input type="hidden" name="b" value="い">
<input type="hidden" name="c" value="う">
<input type="hidden" name="d" value="え">
<input type="hidden" name="e" value="おあ">
<input type="submit" value="send">
</form>
</div>
</body>
</html>
0017nobodyさん2010/09/19(日) 12:40:32ID:e0G02OVN
初歩的な質問で申し訳ありません。

同じURL上で、カテゴリをプルダウンメニューで選択すると表示が変わる、
動的なページを作成しています。

POSTでデータを受け渡した時は、選んだカテゴリが次のページにも反映されるのですが、
GETで受け渡した時は、初期カテゴリに自動的に戻ってしまいます。

選んだカテゴリをURLに反映させたいのでGETを使いたいのですが、
なにかヒントをもらえないでしょうか?
0018nobodyさん2010/09/19(日) 12:41:17ID:???
<?php
$url = "index.html";
$file = file_get_contents($url);
$doc = new DOMDocument();
$doc->encoding = "UTF-8";
$res = $doc->loadHTML($file);
$items = $doc->getElementsByTagName('input');
$cnt = $items->length;
$str = $items->item(0)->getAttribute('value')."\n";
$str = mb_convert_encoding($str, "UTF-8", "auto");
echo $str;
?>

サーバ側もindex.htmlもencodingもUTF-8にしたのに文字化けしてしまいます

0019nobodyさん2010/09/19(日) 12:43:22ID:???
$str = mb_convert_encoding($str, "UTF-8", "auto");
これいらんのじゃ
0020nobodyさん2010/09/19(日) 12:44:02ID:???
$doc->encoding = "UTF-8";
これも
0021nobodyさん2010/09/19(日) 12:54:39ID:???
>>16
postで送信した値を取得したいんだったら$_POST使え
0022nobodyさん2010/09/19(日) 12:57:14ID:???
>>18
phpinfoの内容をうpローダにうpすれば
0023nobodyさん2010/09/19(日) 13:03:41ID:???
>>18
ひょっとしてコマンドラインから実行してるのかね?
0024nobodyさん2010/09/19(日) 13:07:40ID:???
>>18
ttp://hain.jp/index.php/tech-j/2007/02/13/%EF%BC%B0%EF%BC%A8%EF%BC%B0%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
0025nobodyさん2010/09/19(日) 13:21:49ID:???
>>18
<?phpの次の行に
header("Content-Type: text/html; charset=UTF-8");
0026nobodyさん2010/09/19(日) 13:44:14ID:DdIFZWUf
>>19>>20
削除してみましたが結果は同じでした
>>21
postで送信するのではなく index.htmlというページにあるvalueの値を取得したいのです
>>22
encodingはUTF-8でした
>>23
サーバからです
>>24
それを読んでみましたが まったくダメでした
>>25
それもダメでした…

0027nobodyさん2010/09/19(日) 14:14:16ID:???
$cntって何に使ってるの?
0028nobodyさん2010/09/19(日) 14:18:30ID:d8+XLEjx
こんな記事みたんだけど
ーーーーーーーーーーーー
クロスサイトスクリプティングの解説記事でよく説明される「入力データチェックを厳密に」という表現から,
フォーム受付時のタイミングでサニタイジングを行うのかと思いがちである。
サニタイジングは(2)HTML生成時のタイミングで行うべきである。
次章「クロスサイトスクリプティング対策の詳細」で説明するが,
データを埋め込むHTML中の文脈に合わせて適切なサニタイジング手法を選択する必要があるからである。
また掲示板の例では,将来的にデータベースへの記事の書き込み手段として,メールによる投稿が導入された場合でも,
HTML生成時のタイミングでサニタイジングしていれば,
なんら手を加えることなく,いろんな入力源から入り込んでくるデータを漏れなくサニタイジングできる。
また,同じデータに誤って2回以上サニタイジングしてデータの意味が変わってしまうという設計上のトラブルも防げる。
ソース
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session_about
今はデータベースに入れる前に、こんな感じで、
function delete_tag_changing_line($str){
$str=strip_tags($str);
$str=htmlspecialchars($str,ENT_QUOTES,"SJIS");
return str_replace(array("\r\n","\r","\n","\"","\'"),'',$str);
}
$hoge=delete_tag_changing_line($_GET['hogehoge']){
って感じでエスケープしてるんだけど,
上の記事見ると、print関数とかのhtml出力時にエスケープすべきみたいなんだよね。
でも、正直今の設計上で出力時に全部エスケープすると、かなりソースに変更が必要になってしまうです。
だから、今まで通り
$hoge=delete_tag_changing_line($_GET['hogehoge']){
このやり方で、リクエストのフォームデータを扱う時にエスケープかける方向でいきたいんだけど、

>同じデータに誤って2回以上サニタイジングしてデータの意味が変わってしまうという設計上のトラブルも防げる。
>メールによる投稿が導入された場合でも,
ここら辺が問題なければ、現状通りのやり方でも大丈夫かな。
お手間かけてすみませんが、見解聞かせてください。
0029nobodyさん2010/09/19(日) 14:27:07ID:???
>>28
修正に稼動かけてられないなら、問題点をちゃんと把握してれば構わないと思うよ
0030nobodyさん2010/09/19(日) 14:35:32ID:???
>>27
今は使いませんが 文字化けが解決した後に cntの回数だけループしてItemの値を取得しようと思っています
003162010/09/19(日) 14:35:36ID:???
>>8
qd_simple_mailは知らなかったのですがそっちの方も使ってみたところ同じでした。
mbstring.detect_orderが原因でした、ASCII,JIS,UTF-8,EUC-JP,SJISにしたら文字化けしなくなりました。
Qdmail側がそこら辺はうまい具合にやってくれてると思ってたんですが違ったようです。
0032nobodyさん2010/09/19(日) 14:42:52ID:???
>>30
index.htmlの頭に
<?xml version="1.0" encoding="utf-8" ?>
付けたら出たよ

あとID出してね
0033nobodyさん2010/09/19(日) 14:47:01ID:???
>>32
あ すみません。。。janeなので自動でsageてしまいました

それをつけないでできませんか?
0034nobodyさん2010/09/19(日) 15:25:46ID:???
>>33
$doc = new DomDocument('1.0', 'utf-8');
0035nobodyさん2010/09/19(日) 15:29:31ID:???
>>33
phpinfoの内容うpマダデスカー?
0036nobodyさん2010/09/19(日) 15:31:00ID:???
>>33
コマンドラインに出力してるのかブラウザに出力してるのかはっきり書け
0037nobodyさん2010/09/19(日) 15:43:06ID:RW6Zh2z2
$str = "あ いうえお かきくけ こ";
$str = trim($str);

文字列から半角スペースだけ削除したいのですが消えません
どなたかご教示おねがいします
0038nobodyさん2010/09/19(日) 15:47:53ID:???
>>37
str_replace
0039nobodyさん2010/09/19(日) 15:48:05ID:???
str_replace
0040nobodyさん2010/09/19(日) 15:57:35ID:+3xl6Ak5
テキストエディタでPHPを書いてます
eclipseに移行した場合、どのようなメリットがありますか?
テキストエディタからeclipseに移行することで開発スピードは上がりますか?
0041nobodyさん2010/09/19(日) 16:01:10ID:???
>>40
上がる。メリットはぐぐれ。
0042nobodyさん2010/09/19(日) 16:11:39ID:???
でもファイル数が多いと一々エクスプローラウインドウで選択するのがめんどくさいかもって思った。
0043nobodyさん2010/09/19(日) 16:39:27ID:???
>>16
><form action="" method="post" id="test">

actionはマジで空っぽ?
0044nobodyさん2010/09/19(日) 16:57:53ID:???
※自分自身のファイルに送信するときはaction属性の値は省略できる
0045nobodyさん2010/09/19(日) 17:00:41ID:LNQ8CDVB
$test = "test";
echo $test[0];
これがtを表示するのは何故ですか?
0046nobodyさん2010/09/19(日) 17:08:14ID:4bBjydvf
データを取得する部分の実装の話なのですが、
データベースと接続する部分は共通化していますが、
各データを扱う部分は、直接各クラス毎に、
$sql = "SELCT COLUMN FROM TABLE_NAME WHERE CONDITION = '123'"
という風に書いています。

こういう書き方って、皆さんから見るとどうでしょうか?

データ取得部分だけクラス化するという話もききますが、
それだと、SQLの数だけクラスが増えて相当なクラス数になると思います。

どのような方法が一般的なのか、お伺いできればと思います。
宜しくお願いします。
0047nobodyさん2010/09/19(日) 17:11:14ID:???
>>45
そこらへんはCと同じような考え方からきてんじゃないのかね
Cは文字列というものは存在しなくて文字の配列を文字列としてるから

0048nobodyさん2010/09/19(日) 17:14:38ID:???
>>46
オブジェクト指向、MVC、O/Rマッパー、各種フレームワーク等を学ぼう
0049nobodyさん2010/09/19(日) 19:41:04ID:4bBjydvf
>>48
ご回答ありがとうございます。
O/Rマッパーについて調べてみたのですが、Java専用でphpのものはないそうです。
phpでそれに該当するようなものはございますか。

度々のご質問で申し訳ございません。宜しくお願いします。
0050nobodyさん2010/09/19(日) 19:47:19ID:???
>>49
過疎ってるけど
【propel】PHPのORMについて語ろうぜ【peropero】
http://hibari.2ch.net/test/read.cgi/php/1173181854/

ORMの問題ではなく、まずはMVC学んで有名どころのフレームワーク使った方が良いと思うが。
サンプルが参考になるはず
0051nobodyさん2010/09/19(日) 21:05:03ID:2wvRyPkx
>>36
ブラウザに出力です
0052nobodyさん2010/09/19(日) 21:06:51ID:???
>>34
もう諦めたほうがいいのでしょうか・・・
まったくできません
0053nobodyさん2010/09/19(日) 21:11:40ID:???
>>52
>>32
0054nobodyさん2010/09/19(日) 21:26:38ID:???
>>52
もう小出しせずそのまんまのHTML文書とコードを出そうぜ
0055nobodyさん2010/09/19(日) 22:03:35ID:???
ソースは真似されると嫌なので出したくありません。
0056nobodyさん2010/09/19(日) 22:08:46ID:???
動かないコードを誰が真似するんだよw
0057nobodyさん2010/09/19(日) 22:23:54ID:???
小者が書いたコードは既に世界中の誰かが誰かが書いてるんだから気にしすぎ
0058nobodyさん2010/09/19(日) 22:46:55ID:???
preg_match("/検索パターンを表す文字列/", 比較文字列)

/(スラッシュ)って必要?

preg_match("検索パターンを表す文字列", 比較文字列)

だと動作にどういう違いが生じる?
0059nobodyさん2010/09/19(日) 22:50:52ID:???
>>58
やってみた。自分でやってみるほうが早いと思うけどね。

Warning: preg_match() [function.preg-match]: No ending delimiter '.' found in ......

で false を返したよ。@5.2.13
0060nobodyさん2010/09/19(日) 23:09:42ID:???
/がうざいなら##で囲むとかデリミタ変えるといいよ
0061nobodyさん2010/09/20(月) 00:01:59ID:???
省略記述について教えてください。

mysql_query("rollback") and $this->db['autocommit']= 1;

mysql_query("begin") or $this->dberr("トランザクション開始エラー");
はどういった意味になるのでしょうか。

ifも書かれていないため、条件分岐でもなさそう
ですので、悩んでます。

よろしくお願いいたします。
0062nobodyさん2010/09/20(月) 00:25:33ID:???
>>61
スレタイ
0063nobodyさん2010/09/20(月) 00:29:55ID:???
andの場合は前の結果が真の場合実行
orの場合はその逆で偽なら実行
if文とかでもそうでandとか&&は
先の結果が真の時以外その後は実行されない
0064nobodyさん2010/09/20(月) 00:30:41ID:???
>>61
http://jp.php.net/manual/ja/language.operators.logical.php
0065nobodyさん2010/09/20(月) 00:33:59ID:???
>>59-60
本当だ・・・
warning返された・・・

なんてスラッシュなんて要求するんだろう?
ない方が手間も省けるのに
0066nobodyさん2010/09/20(月) 00:40:14ID:???
>>65
正規表現リテラル
0067nobodyさん2010/09/20(月) 00:44:25ID:zsEPGaUe
>>62
すみません。
ID出してませんでした。

>>63 >>64
ありがとうございます。

つまり、
if (!$this->db['autocommit']){
  mysql_query("commit") and $this->db['autocommit']= 1;
}
は、書き換えると
if (!$this->db['autocommit']){
  if(mysql_query("commit")){
    $this->db['autocommit']= 1;
  }
}
になり、
if (!$this->db['autocommit']){
  mysql_query("commit") or $this->db['autocommit']= 1;
}

if (!$this->db['autocommit']){
  if(!mysql_query("commit")){
    $this->db['autocommit']= 1;
  }
}
になるという解釈で宜しいでしょうか。
度重なる質問ですみません。
0068nobodyさん2010/09/20(月) 00:47:16ID:???
それであってる
0069nobodyさん2010/09/20(月) 01:39:01ID:zsEPGaUe
>>68
ありがとうございます。
大変助かりました。
0070nobodyさん2010/09/20(月) 03:41:18ID:???
realpath()で絶対パスを取得することができるわけだけど
一方htmlの画像表示タグ
<img src="(パス)/(ファイル名)">
では(パス)の部分にrealpath()で取得した絶対パスを指定しても正しく画像を表示できないのはなぜ?
これができるようになったら便利なんだけどね・・・
0071nobodyさん2010/09/20(月) 05:05:25ID:???
>>70
スレタイ
0072nobodyさん2010/09/20(月) 05:29:32ID:???
realpath()で絶対パスを取得することができるわけだけど
一方htmlの画像表示タグ
<img src="(パス)/(ファイル名)">
では(パス)の部分にrealpath()で取得した絶対パスを指定しても正しく画像を表示できないのはなぜ?
これができるようになったら便利なんだけどね・・・
0073nobodyさん2010/09/20(月) 08:52:50ID:ZY/coBt6
【OS名】CentOS
【PHPのバージョン】5.2.13 (cli)
【質問内容】

CLI版のPHPは自動でメモリの開放はしてくれないのでしょうか?
ループしているだけで、メモリ使用量がどんどん増えていって、最終的に
メモリが足りなくなって落ちてしまいます。
原因や、回避策をご存知でしたら、教えてください。

例)

<?php
require_once('./simplehtmldom/simple_html_dom.php');

for ($i = 0; $i < 100; $i++) {
  $url = "http://www.yahoo.co.jp";
  $obj = file_get_html($url);
  unset($obj);
  var_dump(memory_get_usage(1));
  sleep(3);
}

int(5505024)
int(9961472)
int(14942208)
int(19660800)
int(24117248)
int(29360128)
int(33816576)
int(38535168)
0074nobodyさん2010/09/20(月) 10:02:34ID:???
$obj = file_get_html($url);

ここをfile_get_contentsにしてやってみ
ちゃんと開放されてるから
原因はfile_get_html
require_once('./simplehtmldom/simple_html_dom.php');
こいつの中身にあるんじゃないかと
なんかメモリにキャッシュするようにしてるのかもしれん
0075nobodyさん2010/09/20(月) 10:29:28ID:???
>>70
imgタグのsrcはwebサーバではドキュメントルートからのパスになるし
realpathから$_SERVER["DOCUMENT_ROOT"]を引けばOK
0076nobodyさん2010/09/20(月) 10:36:00ID:???
>>75
そこらへんHTML5では改善されるといいね
些細なことだけどプログラム上の余計な手間なんだよね>imgタグのsrc指定
0077nobodyさん2010/09/20(月) 10:53:27ID:???
それは改善なのか?
0078nobodyさん2010/09/20(月) 10:58:12ID:???
サーバのパスをimgタグのsrcに指定して表示されるわけなかろう
<img src="/home/takashi/public_html/img/hoge.jpg">とか書くつもりか
0079nobodyさん2010/09/20(月) 11:01:18ID:???
             |
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
   >( c´_ゝ`)  |
            |
>( c´_ゝ`)     J
     >( c´_ゝ`)



             |
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
             |     >( c´,_ゝ`)
             |
             J   >( c´,_ゝ`)
                    >( c´,_ゝ`)
0080nobodyさん2010/09/20(月) 11:09:18ID:ZY/coBt6
>> 74

「メモリにキャッシュする」というのが、
具体的にどういう処理かがよくわからないのですが。

とりあえず、関数の中で static な変数を保持しているとかはありませんでした。

file_get_html の中では、object を new して返してます。
file_get_html が返した object を unset しても、どんどんメモリが増えていきます。。

file_get_contents なら、増えないことは確認できました。
0081nobodyさん2010/09/20(月) 11:24:32ID:???
>>78
その方式でもちゃんとURL変換した上で表示してほしくね?
■ このスレッドは過去ログ倉庫に格納されています