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

【PHP】質問スレッドpart30【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/10/25(火) 06:50:06ID:Q4oGlTH3
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0116nobodyさん2005/11/02(水) 03:14:55ID:???
>>115
大丈夫だ。前スレよりはくだらなくない。
0117nobodyさん2005/11/02(水) 07:40:57ID:???
>>110
せっかくエラーをログしても読まないんじゃ意味ない
01181052005/11/02(水) 08:37:47ID:k7ixpa6e
>>106
ありがとうございます。
> ImageMagickで日本語は無理じゃない?
日本語が含まれている文字が、表示されるのに日本語のみが表示できないのが不思議で…
やっぱり無理なんでしょうか?

> GDで元になる画像作って、必要ならImageMagickで加工するってのがいいのでは?
一応こちらの方向でも進行しています。
0119nobodyさん2005/11/02(水) 10:03:45ID:???
あれ?php5になってからmbstringあたりの設定変わった?
0120nobodyさん2005/11/02(水) 10:07:49ID:???
>>119
PHP-users ML の 27259 辺りに関係のあることが書いてあるかもしれない
0121nobodyさん2005/11/02(水) 13:59:03ID:???
とあるページのカウンタを回さないように読み込むことは出来ますか?
カウンタは上の方にあるので、カウンタを超えた行から読み込みたいのです。
0122nobodyさん2005/11/02(水) 14:12:51ID:VM69hIe2
PHPに重大な脆弱性が見つかったみたいだけど、
具体的に言うと、どんな不具合?
$_GLOBALSが上書きされる??

http://www.hardened-php.net/index.76.html
0123nobodyさん2005/11/02(水) 14:51:14ID:???
>>121
何で読むの?
0124nobodyさん2005/11/02(水) 15:33:17ID:???
>>121
とあるページのカウンタの仕様による。
ちなみにPHPでかかれているページについては、PHPで特別な処理をしていない限り、
HTTPでrange指定しても最初から全部処理して全部かえすぞ。
0125nobodyさん2005/11/02(水) 15:52:15ID:???
>>122
ファイルアップロードフォームの名前をGLOBALにするとやばいらしい
0126nobodyさん2005/11/02(水) 15:55:28ID:???
>>123
理由かな。どうやらカウンタの回り具合で訪問者をチェックしてるみたいなので、
回さずに見れる方法はないかなーと思いまして。

>>124
ソースを見たら<img src="counter?fafafa:ffc34c">とありました。
cgiに渡すもんじゃないのか・・・
0127nobodyさん2005/11/02(水) 15:56:14ID:???
>>122
これの本質は
 GLOBALSを使ってる時は、どこで上書きされるか分からんから気をつけろ!
って所じゃないの?
以前のバージョンでは外からGLOBALSを上書きする方法もあるから、
ここで示されてるPEARの仕組みと組み合わせると、任意の関数を呼ばれる事になる。

ちなみに、外からGLOBALSを上書きできるのは、4.3.10より前か
4.4.1より前、それ以降は既に修正済みのようです。
0128nobodyさん2005/11/02(水) 16:08:37ID:???
>>122
とりあえずPHP5.0.4での簡単な例。php.iniでregister_globals = Onにしないと発生しない。
今時、register_globals = Onにしているのもどうかと思うが、レンサバなんかだと気軽にOffにはできないのかな。

[test.html]
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="GLOBALS">
<input type="submit" value="submit">
</form>

[test.php]
<?php
print_r($GLOBALS);
?>
0129nobodyさん2005/11/02(水) 16:28:35ID:???
シンボルテーブルへのリンクが失敗するのは分かったが
インジェクションの仕方が分からん。上書きはできないんじゃないの
0130nobodyさん2005/11/02(水) 16:38:58ID:???
すまん分かった。
0131nobodyさん2005/11/02(水) 16:50:53ID:???
>>126
それならブラウザを画像を表示しないように設定にすればいいよ
0132nobodyさん2005/11/02(水) 17:12:31ID:???
>>126
理由じゃないよ。
なにで読み込むのかな?
0133nobodyさん2005/11/02(水) 18:45:29ID:???
質問です。

配列の要素にヒアドキュメントを使うことはできますでしょうか?

$array = array(
'key1' => 'value1',
'key2' => <<<EOV
value2
EOV;
);

としたところ、

PHP Parse error: parse error, unexpected ';', expecting ')'

と怒られてしまいました。
文法的にNGなんすかね…

宜しくお願いします。
0134nobodyさん2005/11/02(水) 18:59:14ID:???
>>133
EOV;のセミコロンをはずそう
01351332005/11/02(水) 19:02:32ID:???
>>134

レス有難うございました。
問題なくいけました。

お恥ずかしい。。。
0136nobodyさん2005/11/02(水) 19:44:21ID:???
preg_match で正規表現に変数を使いたいんですが
$regex = '[0-9]';
preg_match( '/^($regex)+$/o', $str );
がうまく動いてくれません。

みなさんは正規表現に複数の変数を含めるときどうしてますか?
0137nobodyさん2005/11/02(水) 19:54:36ID:S6YoA3Rv
>>136
正規表現に変数なんてつかったことないけど、
「.」で連結してみてもダメ?

preg_match( "/^(".$regex.")+$/o", $str );
0138nobodyさん2005/11/02(水) 19:58:33ID:???
>>136
正規表現がどうこうではなくて、PHPでの文字列の扱い(' と " の違い)を
勉強しなおした方がいいのでは?
0139nobodyさん2005/11/02(水) 20:36:08ID:???
ダブルクォートで囲むと変数の内容に置き換わる。
シングルクォートで囲むと変数の内容に置き換わらない。
って、なんでいえないのかなあ。
呆れるわ
0140nobodyさん2005/11/02(水) 20:46:08ID:???
※PHP4.4.1は変数の扱いが変更されているそうです。
バージョンUPすると現行のアプリが動作しない可能性大ですので十分お気をつけて。

実際にはどの部分なのかな?
後気になるのが・・・
実際にアップデートした時に影響がどのくらい影響がでるのかが気になる・・・
対応しなきゃならないんだが・・・$GLOBALS使ってる箇所は全部直せってコトなんか・・・
そこが言及されてなくて今調べてる・・・orz
0141nobodyさん2005/11/03(木) 01:57:40ID:???
>※PHP4.4.1は変数の扱いが変更されているそうです。
×変数→○定数
0142nobodyさん2005/11/03(木) 02:53:13ID:???
>>140
ついでに空の変数を、foreachで回そうとするとエラーが出るようになる。
これのせいで4.3.11のパッチあてたの使ってる。

つか今回の問題騒ぎすぎじゃないか。
彼らが思っている程PEARは普及してないし
register_globalsはoffになっているのではないだろうか。
0143nobodyさん2005/11/03(木) 04:47:39ID:???
世の中にはメンテされていないサーバーが結構あると思われ
それらの中には古いPHPが稼動していたり、
スクリプトを書き換える事ができずにregister_globalsがonのままだったり・・・

$GLOBALSはよく使うけど、使わない方がいいのかな?
でも、globalで似たような問題が出てこないとも限らないし、
かと言って関数実行時に必要な変数を全て渡すのもナンセンスな気がするし
0144nobodyさん2005/11/03(木) 08:23:01ID:???
パッチ上がっていたけどWIN環境での当てかたが分からない('A`)
誰か知っている方ご教授お願いします・・・
0145nobodyさん2005/11/03(木) 09:39:22ID:???
>>144
パッチはPHP本体のソースコード(C言語で書かれている)に対して当てるものなので、
PHPのソースコード(phpの本家サイトでの表記を使うと「Complete Source Code」)をダウンロードし、
それに対してpatchコマンド(Windowsにもあるのか?)か
パッチファイルの中身を参考にしながら手動で書き換えて、それをコンパイル・リンクすればおk。

んでも、コンパイルする環境は整っているのかい?
参照 ttp://www.php.net/manual/ja/install.windows.building.php
0146nobodyさん2005/11/03(木) 15:05:23ID:xJeFN8dM
質問があります。大まかに以下のような継承関係があるとします。

class A {
  public static function factory() {
    return new <CLASSNAME>();
  }
}

class B extends A {
  :
}

B::factory()という呼び出し方をした時に<CLASSNAME>と表記した部分がBになるようにする良い方法はありますか?
今のところA::factory("B");のように引数にクラス名の文字列を渡すしか思い浮かびません。
(これだと生成したオブジェクトに対して、if ($obj instanceof A) のようなチェックなど、余分なものが必要です)
B::factory()で何とかならないものでしょうか?
0147nobodyさん2005/11/03(木) 17:54:47ID:???
ああこれ__class__で親クラスの名前が返っちゃうんだよね
限りなくバグっぽいけど修正されない

サブクラスにクラス名を返すインターフェイスを強要してもいいけど
ファクトリなんだからきっちりオーバーライドするべきじゃないの
0148nobodyさん2005/11/03(木) 17:59:24ID:???
いやバグじゃないか
get_class($this)に相当する別の定数は欲しいなあ
0149nobodyさん2005/11/03(木) 18:39:09ID:???
質問を書こうと思ったけどやめた。
お前らに頼ってたらいつになっても上達しない。
自分でやるから用はねーよ!!!
0150nobodyさん2005/11/03(木) 20:25:52ID:???
(´・ェ・)
0151nobodyさん2005/11/03(木) 20:45:53ID:???
>>149
ごめんにゃあ>w<
0152nobodyさん2005/11/03(木) 23:51:31ID:???
php-usersのメーリングリストみたいに、
届いたメールを表示させることは可能ですか?
0153nobodyさん2005/11/04(金) 00:35:35ID:???
>>152
意味不明な日本語なり
0154nobodyさん2005/11/04(金) 01:01:56ID:???
4.4.1、もろに来たよ。18時間悩んだが、結局4.4.0に戻した。影響範囲がハッキリしないと
危ない。FreeBSDだが、まず一部のrequireが利かなくなったがinclude_pathで全て指定
すると利くようになった。しかし子プロセスがexit signal Bus error (10)で落ちる。

extensionからzlib.soを外すと落ちなくなるが、is_dirが問答無用でfalseを返すようになる
などなど。

ところがWin32版PHP4.4.1では同じアプリケーションが、全く変更しないでも、問題なく
動作してしまう。
01551362005/11/04(金) 12:10:20ID:???
>>137,138,139

うわーすっごいボンミス。。。
ダブルクオートしたら動きました。。。
くだらない質問に答えてもらってありがとうございました。

ひとつ疑問なんですが、先に変数を展開してくれるんですね。
/^$regex+$/
/^{$regex}+$/
でも同じ動きしたので。
0156nobodyさん2005/11/04(金) 12:33:17ID:???
ん、
""の中の$変数を解釈(展開)するのが渡された関数ではなく、
phpのパーサであることを考えれば当然の動作では?
0157nobodyさん2005/11/04(金) 12:50:23ID:???
""内の$を変数として選り分けるのはパーサじゃなくてレクサだけどね。
と揚げ足をとってみるテスト。
0158nobodyさん2005/11/04(金) 15:02:09ID:???
>>157
参考になる(+1)
0159nobodyさん2005/11/04(金) 15:04:55ID:???
レクサって初めて聞いた・・・
0160nobodyさん2005/11/04(金) 16:45:40ID:???
レクサって何??
0161nobodyさん2005/11/04(金) 16:51:13ID:???
○レクサ ← ア が入る
レクサ○ ← ス が入る
0162nobodyさん2005/11/04(金) 16:54:04ID:???
ttp://kentn.at.infoseek.co.jp/cpp/parser.html
0163nobodyさん2005/11/04(金) 21:35:57ID:Q83NQbMF
アホが前スレあげやがったのでageときます
0164nobodyさん2005/11/05(土) 00:08:24ID:w/1ugKYJ
趣味サイトなのですがPHPしか使えないサーバーでした
ページ毎のアクセスランキングを設置したいのですが何処かにPHPカウンターの配布とかありますか?
1から勉強しなおさないと出来ませんでしょうか・・・PHP全く知らないです(マニュアル読みましたけどまだ半分位も理解できてないですし
ググってもそれらしいものが見当たりませんでした、鯖の仕様はPHP4のsafemodeらしいです
0165nobodyさん2005/11/05(土) 00:19:53ID:???
ぐぐりがたらない
0166nobodyさん2005/11/05(土) 00:22:11ID:???
      _______                     __
    // ̄~`i ゝ                    `l |
    / /        ,______   ,_____    ________  | |  ____ TM
   | |     ___ // ̄ヽヽ // ̄ヽヽ (( ̄))   | | // ̄_>>
   \ヽ、   |l | |    | | | |    | |  ``( (.  .| | | | ~~
      `、二===-'  ` ===' '  ` ===' '  // ̄ヽヽ |__ゝ ヽ二=''
                         ヽヽ___//   日本
         ______________  __
         |                    | |検索|←をクリック!!
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ̄ ̄
         〇ウェブ全体  ◎日本語のページ
01671642005/11/05(土) 00:28:06ID:EXt1uRpt
判りました
有難う御座います
ググり続けてきます
0168nobodyさん2005/11/05(土) 00:33:26ID:???
>>166
それだと元のページに戻るだけかと
昔は何もない検索結果っぽい画面に移行したんだけど、バグだったんだろうな
0169nobodyさん2005/11/05(土) 01:44:21ID:???
♪スプラピ>(・∀・)入(・∀・)<スプラパ♪スプラピ(゚д゚)ぷぅぅぅ〜

         ウェブ イメージ グループ ディレクトリ
         ______________  _____
         |トンネル               | |Google検索|    検索オプション
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ̄ ̄ ̄ ̄ ̄    表示設定
        ◎ウェブ全体から検索  〇日本語のページを検索

トンネルぐぐってぐぐって〜
0170nobodyさん2005/11/05(土) 02:49:09ID:???
(・∀・)b そろそろおしま〜い

(・∀・)ノ~~~ バイバーイ♪
0171nobodyさん2005/11/05(土) 06:11:01ID:???
教育実況民がこんなところにも…
0172nobodyさん2005/11/05(土) 08:48:34ID:???
教育実況民きもすぎる
0173nobodyさん2005/11/05(土) 12:00:25ID:???
     ヽ:::::::::::::::::::::::::::::::::::
 高 テ|:::::::::::::::::::::::::::::::::::
 け .ン |ーノノーヽ⌒ヽ:::
 | シ|ノ ノ  ノ  ノ:::
. じ  ョ|  ; ;;;;;;;/ヽヽ::
  ゃ ン|  ;;     ;;|::::
 ん   |  :::/⌒ヽ ;;; |:::::
     |  ;;/ O ヽ;; |::::::
     / υ '''';;;;ー´ |:::::
_ _ノ::         |::::::
::::::V::::::::::::  ヾ      |:::::::::
:::::::::::::::: ;;,, ,,, )   i  |:: |
 :::::::::::::::......      し |::/
   _____    .|
   |ー――――|   /
   |_____|   /
    ,,,,,,,,,,,,,,,,,,,,,   /
\         /
  \____/
0174nobodyさん2005/11/05(土) 12:05:07ID:???
>>173
ごめん、面白くない。
0175nobodyさん2005/11/05(土) 16:21:46ID:???
$_SESSION['xxx']
だけ生存期間を短くしたいのですが、
どうすればいいのでしょうか
誰かお願いします
0176nobodyさん2005/11/05(土) 16:54:41ID:???
>>175
手製のガーベージコレクタを動かして
短い期間で消す。
0177nobodyさん2005/11/05(土) 18:25:59ID:???
すいませんがアカウント作成まわりで質問があります。

1.メールアドレスを入力して送信
2.メールにURLが表示
3.URLをクリックするとアカウント登録完了

としたいのですが、URLを

***.php?[メールアドレス][日時][アドレスと日時のハッシュコード]

という風にしてハッシュの整合性をチェックして
アカウント作成、という風にしたら
何か問題があると思いますか?
ハッシュが解読されない限り大丈夫だとは思うんですが、何か心配です
0178nobodyさん2005/11/05(土) 18:26:47ID:???
日時が入ってるのは、期限を1日とか決めたいからです
0179nobodyさん2005/11/05(土) 18:36:03ID:???
ハッシュの元を含めるのはどうかと思う
0180nobodyさん2005/11/05(土) 18:48:45ID:???
うーん、でもAさんとBさんが同時に仮登録した場合
どっちかを見分ける必要がありますよね

鍵付きのハッシュで鍵を長くしても駄目でしょうか
0181nobodyさん2005/11/05(土) 19:12:30ID:???
>>180
1.メールアドレスを入力させる
2.ユーザはメールアドレスを入力しPOSTする
3.システムがメールアドレスからハッシュを取得する
4.システムはハッシュ値と日付をどこかに保存する(DBとか)
5.システムが
 http://example.com/hoge.php?[ハッシュ]
 を含んだメールを入力されたアドレスに送信する。
6.ユーザが上記のアドレスにアクセスする
7.システムは保存されたハッシュを検索する
以下略
0182nobodyさん2005/11/05(土) 19:29:17ID:???
ハッシュのアルゴリズムってmd5使ってる? sha1? オリジナル?
0183nobodyさん2005/11/05(土) 19:43:57ID:???
>181
なるほど。
177さんではありませんが勉強になります。
0184nobodyさん2005/11/05(土) 22:10:21ID:???
今回のヴァージョンアップってさー
GLOBALSに外部ユーザーからの値を受け取らないように組んでればOK
ってことだよね
若干騒ぎすぎな気がする。
0185nobodyさん2005/11/05(土) 22:20:31ID:???
ヒント:騒いで不安を煽った後で、「セキュリティ強化キャンペーン」を実施し、小遣いGET
0186nobodyさん2005/11/05(土) 22:48:28ID:???
>>182
md5('a')
0187nobodyさん2005/11/05(土) 22:58:28ID:???
最初プギャーってやってるのかと思った
0188nobodyさん2005/11/05(土) 23:09:30ID:???
'a' とか単純な数値の md5 値をググると大量にヒットするよね
0189nobodyさん2005/11/05(土) 23:17:36ID:???
PHPに深刻な脆弱性が見つかったと聞いて飛んできました。
0190nobodyさん2005/11/05(土) 23:18:44ID:???
>>189
もう終わったよ
0191nobodyさん2005/11/05(土) 23:20:54ID:???
PHP が
0192nobodyさん2005/11/05(土) 23:42:15ID:???
>>186
> >>182
> md5('a')

m9('A')
0193nobodyさん2005/11/05(土) 23:53:12ID:???
>>182
md5の結果を自前で適当に変換してる
md5そのままだと、それっぽいのがなんだかな〜って気がするので
0194nobodyさん2005/11/06(日) 02:19:18ID:???
コマンドラインで実行されたのと
サーバ上で呼び出されたのとを
区別する方法ってありませんでしょうか?
0195nobodyさん2005/11/06(日) 02:34:36ID:???
>>194
php_sapi_name()かisset($argv)あたりかな
0196nobodyさん2005/11/06(日) 02:44:47ID:???
>>195
$argv は php.ini の register_argc_argv が On なら CLI じゃなくてもありますよ。(CLI では強制 On)
CLI + Apache モジュールなら php_sapi_name() 関数か PHP_SAPI 定数で判別できますね。
CGI としてインストールされてるなら判定用の環境変数を仕込むのがいいんじゃないかと。
0197nobodyさん2005/11/06(日) 03:44:17ID:???
>>192
>>>186
>> >>182
>> md5('a')
>>
>m9('A')

m9(^Д^)
0198nobodyさん2005/11/06(日) 15:31:18ID:???
メール送信フォームを作るときに、
メール本文はどこで定義していますか?

メール本文に受け付けたクエリを載せるとしたら
やっぱりそのプログラム内部に .= とか ヒアドキュメントとかで
書くしかないのかな?

メール本文だけ外部ファイルにして、
requireしようかと思ったけどなんか違う。
外部ファイルをevalしようかと思ったけどこれもまたなんか違う。
やっぱり本文に書くのみ!?
別変数で定義しておいて、
あとから参照しようとしても上と同じことになるし…

Perl使ってたときは、外部ファイルにして
クエリ載せるところは正規表現で全部置換してたんだけどなぁ
0199nobodyさん2005/11/06(日) 15:42:09ID:???
>>198
日本語で喋ってくれ。頼む
0200nobodyさん2005/11/06(日) 15:42:46ID:???
>Perl使ってたときは、外部ファイルにして
>クエリ載せるところは正規表現で全部置換してたんだけどなぁ
じゃあそすればいいじゃない。
つうか、別に正規表現使わなくてもできるよね。
0201nobodyさん2005/11/06(日) 15:43:46ID:???
>>198
どうしっくり来ないのか判らないんだけど、漏れは外部ファイルに置いて
文字列に取り込んでる。

$message = file_get_contents('mailtemplate.txt');
02021982005/11/06(日) 15:51:28ID:???
>>199

駄文申し訳ない。別に問題ないことなんだけど、
周りはどうしてるのかなーと気になっただけです。

>>200

PHPらしく考えると、正規表現を使うよりは
変数展開の方がいいかなーと勝手に思ってしまったです。
そうなると外部ファイルに持つ方がしんどくなるので…

>>201

メール本文がクエリによって可変でないなら
file_get_contentsがスマートですね。
可変になったらどうしてます??
02032012005/11/06(日) 15:51:34ID:???
>>201
ありゃ。後半が切れた…
で、$message内のキーワードをstr_replaceで置換して本文を生成。
02041982005/11/06(日) 15:54:49ID:???
>>203

なるほどどうもです。
PHPだと <?=$hoge?> で変数展開できるのに
変数毎に置換することを考えると
ちょっとしっくり来ないんですよね。
(どうでもいいことか…
02052012005/11/06(日) 16:11:54ID:???
>>204
あ〜、なるほど。しっくり来ないのはその辺なんすね。
HTMLファイルなんかもそうだけど、テンプレートはあくまでもテンプレートであって
必ずしもPHPプログラマがいじる物とは限らないので、PHP色は排除してる。
もう少し具体的に書くと、こんな感じ。
これがベストとは思わないけど、ウチではこうやってるよ、ということで。
実際にはサニタイジング、文字コード変換等やっているので、その辺のツッコミはなしよ。

---mailtemplate.txt(テンプレートファイル)---
送信者:#FROM#
タイトル:#TITIE#
ご質問内容:
#MESSAGE#

---php---
$message = file_get_contents('mailtemplate.txt');
$message = str_replace(
 array('#FROM#', '#TITLE#', '#MESSAGE#'),
 array($_POST['from'], $_POST['title'], $_POST['message']),
 $message);
mb_send_mail(SUBJECT, $message, ...);
0206nobodyさん2005/11/06(日) 16:27:23ID:???
>>205
なるほど、非常に参考になります。

外部ファイルの置換文字列自体を
<?=?>等のPHP変数にして、
本体からrequireしてしまえば
いいかなとも思ったんですが、
本体見ないと何してるのかわからないんすよね…

ってrequireじゃダメか…
となるとeval…となるとエスケープがめんどい。。

201さんのやり方が一番いいかもしれないすね
02071982005/11/06(日) 16:27:53ID:???
206=198 デス…
0208nobodyさん2005/11/06(日) 17:28:47ID:???
<?php =$hoge ?>にこだわる?意味がわからんが
require使いたければ

$hoge = "aaa";
$piyo = "bbb";
としておいて

require "orz.php";

----- orz.php
....
{$hoge}さまへのメール
{$piyo}のお知らせ
-------
とかでいいじゃね?
02092082005/11/06(日) 17:31:56ID:???
ちと補足つか舌足らずごめん

---- orz.php
$mail_body = <<<EOF

{$hoge}さまへのメール
{$piyo}のお知らせ
-------
ということね^^;
0210nobodyさん2005/11/06(日) 19:14:21ID:???
そんな時、ob_*使えば、良いじゃない。
02111982005/11/06(日) 21:25:54ID:???
>>209

レスありがとうございます。

<?=?>にこだわっているというよりは、
PHPらしさにこだわっているってことでしょうか(汗

確かにrequireだと、ヒアドキュメントとかになっちゃうんですよね。
(そうなるとあまり外部にする旨みがなくなってしまうかな…)
0212nobodyさん2005/11/06(日) 21:32:52ID:???
include/requireを使うなら>>210の言うとおり、
ob_*を使って任意の変数に取り込めばいい
phpコードを含められるって利点くらいしかなさそうだけど。
02131982005/11/06(日) 21:39:10ID:???
>>210,212

レスありがとうございます。

なるほど、ob_* って手もありましたね。
ただここまでくると、PHPコードで展開するか
既定文字列を置換するかどっちかですね。

今までどおりプログラム本体にヒアドキュメントが
一番楽でシンプルかな…

ありがとうございます
0214nobodyさん2005/11/07(月) 00:19:44ID:VYJqOcB8
PHPでHTMLを解析して、HTML内の特定位置の情報(テキストやタグの
アトリビュートの値)を抽出するようなライブラリはないでしょうか。
PerlだとTemplate::Extractというのがあるようです。
ttp://naoya.dyndns.org/~naoya/mt/archives/000833.html
XML_HTMLSaxでも実現可能そうですが、Template::Extractのように
ルール定義だけで抽出できるようなのを探しています。
0215nobodyさん2005/11/07(月) 16:30:23ID:QyO81Mjh
あげ
■ このスレッドは過去ログ倉庫に格納されています