【PHP】下らねぇ質問はここに書き込みやがれ 52
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/08/11(土) 10:08:03ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0666nobodyさん
2007/08/21(火) 13:15:33ID:HsIELwushttp://www.youtube.com/watch?v=FIKYDzkaZOQ
0667nobodyさん
2007/08/21(火) 14:32:42ID:???もっと近代的なCMにしようぜ・・・
0668nobodyさん
2007/08/21(火) 14:48:25ID:???お前はclassicの良さが分からないんだろうな。
こういう奴は、phpの新しいバージンョが出たらすぐに飛びついて、
運用ですぐに火がすぐに決まっている。しかも、原因がphpのバグだとわかるると、自分で新しいバージョンにしたことを棚にあげて、何だphpのバグじゃないですか、と平気な顔で言い訳する。
うざい、うざすぎる、失せろ!
0669nobodyさん
2007/08/21(火) 14:57:50ID:???0672nobodyさん
2007/08/21(火) 16:43:18ID:???自演だろ。
文体変えないとすぐにバレちゃうよ。
「w」を使う癖なおさないとね☆
0673nobodyさん
2007/08/21(火) 16:47:26ID:???0675nobodyさん
2007/08/21(火) 17:20:24ID:???といいたくなるだろ常識的に考えて。
0676nobodyさん
2007/08/21(火) 17:51:37ID:???0677nobodyさん
2007/08/21(火) 17:55:30ID:HsIELwus_, ._
( ・ω・) . .
○={=}〇, ; .'´ `. ゙ ; `
|::::::::: \,.'.;´," :´,´' . ゙ .` .
.,,.,.,,,.,.,,,.,.,,,.,.,,,.,し,,.,.,((@@@@)wwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwww
0678nobodyさん
2007/08/21(火) 18:01:16ID:???今月をyyyy/mmで取得するには、
$month=date("Y/m")
でできたのですが、「先月」を取得するにはどうするのでしょうか?
0679nobodyさん
2007/08/21(火) 18:04:05ID:???$month = date("m") - 1;
if ($month == 0) $month = 12;
0680nobodyさん
2007/08/21(火) 18:14:47ID:???参考書どうりにしてもPHPの設定がどうもうまくいかず、テストように作ったPHP「<?phpinfo();?>」をhtdocsファイルにphpinfo.phpという名前で保存し
ブラウザで http://localhost/phpinfo.php を表示しようとしても
「ページが見つかりません」となります。
設定は以下のようにしました。
「php.ini-dist」をC:¥windowsにコピーし、名前を「php.ini」に変更
「php5ts.dll」、「libmysql.dll」をC:\System32へコピー
php.iniを12箇所設定
スペルなどもよく見返したのですがどこが間違っているのか分かりません。
心当たりのある事があればアドバイスいただけないでしょうか?
0682nobodyさん
2007/08/21(火) 18:20:33ID:CrdOKfm6そもそも
http://localhost/ には繋がるのかい?
0683nobodyさん
2007/08/21(火) 18:22:47ID:???0684nobodyさん
2007/08/21(火) 18:24:19ID:???0685nobodyさん
2007/08/21(火) 18:27:05ID:???すみません起動できてませんでした('・ω・`)
コマンドプロンプトが表示され
「通常、各ソケット アドレスに対してプロトコル、ネットワークアソレスまたはポートのどれか1つのみをしようできます。」
といって起動できてなかったです。
>>「IT Works!」と表示されます。
0687nobodyさん
2007/08/21(火) 18:40:09ID:CrdOKfm6ウインなら90%が英数を半角で書けていないの原因だろうな。
0689nobodyさん
2007/08/21(火) 18:42:09ID:???それだとhttpd.conf見ないとなんともいえない
多分ServerNameの行がServerName localhost:80じゃないとか
そのへんじゃない?
あてずっぽなので後は詳しい神光臨待ちでよろしく
0690nobodyさん
2007/08/21(火) 18:44:00ID:???0691nobodyさん
2007/08/21(火) 18:47:46ID:???流れになるのかな。
このメッセージにしても
> ネットワークアソレス
なんでコピペせずに書き写すんだよう。
0692nobodyさん
2007/08/21(火) 18:50:43ID:???0694nobodyさん
2007/08/21(火) 18:58:01ID:???0695680
2007/08/21(火) 19:02:54ID:???お騒がせしました。
0696nobodyさん
2007/08/21(火) 19:05:07ID:CrdOKfm60699nobodyさん
2007/08/21(火) 20:26:41ID:FmKhNr2EPHP というよりは電子メールの質問かもしれませんが・・・
OSのデフォルト文字コード($LANG)はutf-8 なので、*.PHP ファイルの文字コードも utf-8 にしています。
php からメール送信するプログラムを作っているのですが、とりあえず以下のようにサブジェクトの文字列を設定してメール送信しました。
$subject = mb_encode_mimeheader("サブジェクト");
受信したメーラでは特に文字化けしてないのですが、MTA のスプールを直接 cat 等でみると、
Subject: =?UTF-8?B?44K144OW44K444Kn44Kv44OI?=
となっていることに気が付きました。
MIME エンコードの元文字コードが =?UTF-8?B?〜 というようにUTF-8 になっています。
ソースがutf-8で、内部エンコーディングもutf-8で、さらにmb_encode_mimeheader() の第二引数に
何も指定していないので、この現象はあたりまえです。
電子メールの場合、MIME エンコードの元文字コードは iso-2022-jp にしておいたほうがいいのでしょうか?
プログラムを以下のように修正すれば
$subject_jis = mb_convert_encoding("サブジェクト", "ISO-2022-JP", "UTF-8");
$subject = mb_encode_mimeheader($subject_jis, "ISO-2022-JP");
↓のようになることは確認しました。
Subject: =?ISO-2022-JP?B?GyRCJTUlViU4JSclLyVIGyhC?=
p.s.
・メーラで文字化けするかどうかは、メーラしだいですね。別のメーラでは文字化けしました。
・/etc/php.ini の mbstring は、すべて;でコメントアウトされている状態です(CentOSのデフォルト)
0700nobodyさん
2007/08/21(火) 20:32:37ID:???0701nobodyさん
2007/08/21(火) 20:41:38ID:FmKhNr2Eレスどうもありがとうございます。
mb_language は mb_send_mail() の中でしか使われてないんですよね?
http://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
情報が遅くなって申し訳ありませんが、メール送信は mb_send_mail() ではなく、
PEAR::Mail と PEAR::Mail_Mime をつかって smtp 接続しています。
私の質問は、プログラムをどう書けばいいか、というより、ヘッダの文字列はどうあるべきか、です。
ゴールが定まれば、それにあわせてプログラムを直せばいいので。
すみません、質問しておきながらでかい態度で申し訳ありません。
やっぱりスレ違いですね・・・申し訳ありません。
0702nobodyさん
2007/08/21(火) 20:48:46ID:FmKhNr2E$subject = mb_encode_mimeheader("サブジェクト");
にしたまま、スクリプトの最初のほうで
mb_language("Japanese");
を加えておいて、もう一度メール送信したら、ヘッダが =?ISO-2022-JP?B?〜 になりました!!
mb_language() を呼んでおけば、mb_send_mail() は使ってなくても mb_XX 関数には
作用するということかな。だとすると >>701 で挙げたページは間違っているということか・・・
>>700 さん、大変失礼しました。
やはり =?ISO-2022-JP?B?〜 が正しいということかな。
0703nobodyさん
2007/08/21(火) 21:33:26ID:???=?ISO-2022-JP?B?〜
=?UTF-8?B?〜
どっちも正しいわけで。
ただ明らかにメーラが対応している文字コードは
UTF-8よりISO-2022-JPの方が多いから、受信環境を特定出来ないなら
ヘッダはISO-2022-JPにしておいた方が無難だろうね。
0704nobodyさん
2007/08/21(火) 23:17:26ID:???とある海外のXoopsを使ったフォーラムを利用しているんですが、
ログインするとタイムスタンプが正しく表示されません。
あちらの記述がおかしいのかなとは思いますが、こっちで変換すればいいやと思ってます。
なのでそれぞれの数値が意味するものを教えていただきたいです。
表示例: **e**, * aug* *
0705nobodyさん
2007/08/21(火) 23:49:32ID:61X5JLR70707nobodyさん
2007/08/22(水) 01:44:23ID:FkUTlorqこういう書き方が糞面倒くせえんだが
いい方法ないかな?
0708nobodyさん
2007/08/22(水) 01:44:24ID:???0710nobodyさん
2007/08/22(水) 01:56:56ID:???http://www.php.net/~derick/meeting-notes.html#ifsetor-as-replacement-for-foo-isset-foo-foo-something-else
0712nobodyさん
2007/08/22(水) 02:13:23ID:???5.2.4RC2でも治ってねーし。
自信満々に、Zend Memory ManagerのDisableを外した割りに、
この酷さは、ありえねーーーー。
5系への移行怖くてできねーよ。
0714nobodyさん
2007/08/22(水) 02:44:42ID:???0716nobodyさん
2007/08/22(水) 03:16:01ID:ZSqbYf8F$title = mb_convert_encoding($ch['title'], "UTF-8", "UTF-8,EUC-JP,SJIS");
の行で
Fatal error: Call to undefined function: mb_convert_encoding() in /パス/rssv.php on line 17
とエラーが出ました
このパスを回避するには、どのようにしたらよいでしょう?
環境
OS:Redhat
PHPバージョン:PHP 4.4.8-dev
php.iniの設定
extension_dir = "./"
0717nobodyさん
2007/08/22(水) 03:45:55ID:???0718nobodyさん
2007/08/22(水) 04:04:21ID:???mb_convert_encoding()を使わなければいい。
どうしても使いたいというならマルチバイト拡張モジュールを有効にしてPHPを再コンパイルするか、
マルチバイト有効のPHPパッケージを別途探してきてインストール。
0719nobodyさん
2007/08/22(水) 05:53:15ID:jH3QxwUQhttp://blog.ohgaki.net/index.php/yohgaki/2007/08/22/set_namesa_mcb_asc
これどういうことか解説プリーズ
文字エンコーディング設定APIて何よ?
PHPからそんなの使えるの?
0720nobodyさん
2007/08/22(水) 06:15:01ID:???ほいお
0721nobodyさん
2007/08/22(水) 06:16:48ID:lAejclp9時間が掛かりすぎるので、ブラウザの中止ボタンを押すと、
スクリプトの実行が止まるものと止まらないものがあります。
# スクリプトが止まっているかどうかは、更新しているDBも状態を見ると分かります。
スクリプトが長いので、どこの違いでこのような違いが発生するのかわからないのですが、
そもそもブラウザの中止ボタンが押されたことをphpスクリプトが受け取って、
phpの親プロセス?が子プロセス?をkillするような仕様があるのでしょうか?
ブラウザの中止ボタンを押した場合の処理の流れが、
検索しても見つけられなかったので、ご存知の方がありましたら、
教えて頂きたいのですが。
0722nobodyさん
2007/08/22(水) 06:22:57ID:???bool mysql_set_charset ( string $charset [, resource $link_identifier] )
(PHP 5 >= 5.2.3)
Notes
Note: This function requires MySQL 5.0.7 or later.
ttp://www.php.net/manual/en/function.mysql-set-charset.php
07/05/31にリリースされたPHP5.2.3以降で追加された新関数。
現状、英語版マニュアルには記載されてるが、
日本語版マニュアルにはまだ記載されていない。
PHP4が公式サポートされなくなったことで、順次PHP5への移行が
進行していくと思われるが、セキュリティ的に良くないと言われても
すぐにこの関数を使うようにソースを直せるってもんではないよな。
0723nobodyさん
2007/08/22(水) 06:37:46ID:???Webサーバーやそのバージョン、OSによっても挙動が異なるようだけど、
基本的には「Webサーバーが通信の中断を検知できたらプロセスを中断」かと。
そのプロセスが実行途中に画面出力を行う場合は通信中断を検知しやすくなるけど
出力がバッファリングされている場合などには必ずしも検知できません。
0724nobodyさん
2007/08/22(水) 06:47:52ID:???0725nobodyさん
2007/08/22(水) 07:37:41ID:???ttp://www.php.net/manual/ja/features.connection-handling.php
0726nobodyさん
2007/08/22(水) 10:51:07ID:9fOfvrbD0727nobodyさん
2007/08/22(水) 11:03:03ID:???なすすべもなく立ちつくすしかなかった・・・
0728nobodyさん
2007/08/22(水) 11:10:12ID:???ネットで見つけた
$string=ereg_replace("(http)(://[[:alnum:]\S\$\+\?\.-=_%,:@!#~*/&]+)","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$string);
だと
http://alt-talk.cocolog-nifty.com/alternative/
や
http://www.amazon.co.jp/これが変換だ/dp/4408106569/ref=sr_1_1/250-8084245-899
9427?ie=UTF8&s=books&qid=1185443101&sr=8-1
といったURLがうまく変換できません(途中までしか変換しない)、どうしたらうまくいくんでしょうか
0729nobodyさん
2007/08/22(水) 11:19:59ID:lAejclp9返信ありがとうございました。
確かに、画面に進捗度を表示しているプログラムは、中止を押したときに、
スクリプトも止まりますね。勉強になりました。
又、phpにもステータスを取得する仕組みがあることも初めて知りました。どうもありがとうございました。
0730nobodyさん
2007/08/22(水) 11:56:41ID:???早くもスキャンダルに見舞われた。
22日発売の週刊新潮が「『議員失格!』元愛人が剥(は)がした
『さくらパパ』の仮面」と題し不倫と賭けゴルフを報じている。
報道を受け本人は関係者に「(議員を)辞めんといかんかね」
ともらしたという。党では10日間の“自宅謹慎”を言い渡し、
沈静化を図る構えだが、民主躍進の象徴が“火薬庫”になりかねない状況となった。
http://headlines.yahoo.co.jp/hl?a=20070822-00000087-sph-soci
0731nobodyさん
2007/08/22(水) 11:58:01ID:PQxZUsbl<?php
class Foo {
public function staticValue() {
return self::$my_static;
}
}
class Bar extends Foo {
public static $my_static = 'foo';
}
$bar = new Bar();
print $bar->staticValue();
?>
こんなイメージなんだが。
0734nobodyさん
2007/08/22(水) 12:53:59ID:???親ではスタティック宣言じゃないが、>>732でokだろう。
>>733
オブジェクト指向では良くあること。
0736731
2007/08/22(水) 14:02:23ID:???なるほど。
ありがとうございますー。
>>733
クラス名が変数に入ってるんですが、
その場合にstaticが読み出せないのでメソッド経由でやろうかと。
まとめると結局staticじゃなくて普通にプロパティでいいじゃんって感じになりそうですが。
0738nobodyさん
2007/08/22(水) 15:23:19ID:mexO5YhNsitemap.phpへ
$lastupdate=date("Y-m-d", filemtime("./index.php"));
$lastupdate2=date("Y-m-d", filemtime("./xxx.php"));
$sitemap=<<<_EOD_
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://example.com/</loc>
<priority>1.0</priority>
<changefreq>always</changefreq>
<lastmod>$lastupdate</lastmod>
</url>
<url>
<loc>http://example.com/xxx.php</loc>
<priority>1.0</priority>
<changefreq>always</changefreq>
<lastmod>$lastupdate2</lastmod>
</url>
_EOD_;
echo $sitemap;
?>
つづきます。
0739nobodyさん
2007/08/22(水) 15:24:52ID:???.htaccessへ
RewriteRule ^sitemap\.xml$ sitemap.php
としてhttp://example.com/sitemap.xml で呼び出していますが、
ブラウザーで見た目が普通のテキストをブラウザーで開いたように、改行も無い状態です。
また、sitemap.php直接読み込んでも全く同じです。
ソースをみるときちんとxmlのソースなのですが。
ちなみにsitemap.xmlというファイルを作りそこへ上記の<?xml 以下を書き込み読み込んでみると
普通のxml文のように問題なく改行されています。
どうして改行されず普通のテキストのように表示されるのでしょうか。
0740nobodyさん
2007/08/22(水) 15:26:47ID:???headerでxmlにかえてみたら?
0741nobodyさん
2007/08/22(水) 15:35:56ID:???さっそくありがとうございます!
$lastupdate2=date("Y-m-d", filemtime("./xxx.php"));
の下へ
header("content-type: text/xml");
を追加でうまくいったようです!
すばやいレス感謝感謝でした!
0742nobodyさん
2007/08/22(水) 15:57:09ID:???<td>12345</td>
この二つを検索して上のほうだけ取り出したいんだけど正規表現でどう表せばいいかな
アイウエオは全角カナ、12345は半画数字ってことで
<td>[ァ-ヶ](.*?)<\/td> これじゃ無理みたいなんだ
0744nobodyさん
2007/08/22(水) 16:01:52ID:???コーストコーストっていうフレーズが良く聞こえるのですが、
これってどういう意味でしょうか?
すみません、ヨロシクおねがいします。
0746742
2007/08/22(水) 16:04:40ID:96cOsorX0748nobodyさん
2007/08/22(水) 16:08:23ID:???条件は半角カナだけ?
俺のは
preg_match('/<td>[ァ-ヶ]+?<\/td>/', $txt, $match);
で取得できた。
文字コードによってかわるはず
ちなみにこれはSjis
0749nobodyさん
2007/08/22(水) 16:08:57ID:???すみません。
最近このスレをインターネットでみつけて、いつも直レスで見ているもので、
場違いと思いながらも投稿してしまいました。
お答えいただけるとありがたいのですが。
0750742
2007/08/22(水) 16:09:26ID:96cOsorX0751nobodyさん
2007/08/22(水) 16:12:14ID:???だから、何で場違いと思ったのに投稿したわけ?その神経がわからない
スレ探せば他にもいっぱいあるだろ?
何で探そうとしないの?
自分でスレ探して
「○○なようなスレを○○のように探したのですが見つかりません。
誘導または検索のヒントをください。」といえないの?
自分で調べるクセってのはこの先必ず必要になってくる。
特にPHPとかプログラムをしていると。
0752nobodyさん
2007/08/22(水) 16:18:08ID:???不機嫌な思いをさせてしまい申し訳ありません。
ブラウザ検索でコーストコーストとやってみたのですが、
みつかりません。というメッセージが出てしまったので、
困って投稿してしまいました。
すみませんでした。
0754nobodyさん
2007/08/22(水) 16:24:59ID:???ん〜、EUCでも基本並び一緒みたいだな・・・
16進数で指定してみるとかは?
>>752
http://academy6.2ch.net/test/read.cgi/english/1187579403/l50
0755742
2007/08/22(水) 16:28:54ID:96cOsorX0756nobodyさん
2007/08/22(水) 17:27:17ID:ylxTf1OB文字列をパターンリストで置換してから出力したいのですが、多重に置換されてしまいます。
具体的には以下のような状況。
パターン1 : abcde => <hoge>abcde</hoge>
パターン2 : abc => <hige>abc</hige>
置換元文字列 abcdef
包括関係で上なので、パターン1だけを適用し <hoge>abcde</hoge>f となって欲しい。
ところが置換後にもabcが残るため、パターン1 -> パターン2 の順に置換をかけると<hoge><hige>abc</hige>de</hoge>fとなってしまう。
パターン2を先にしたところで何が解決するわけでもなく・・・。
パターン2でabcがマッチしたときに、それが既に<hoge>で囲われていないかどうかチェックしてから置換するような処理を自分で書くしかないんでしょうか。
0757756
2007/08/22(水) 17:29:31ID:???すみません訂正、パターン2を先にすれば一応多重置換は起こらなくなりますね。
でもパターン1の優先度が上でないと困るのです。
0758nobodyさん
2007/08/22(水) 21:03:22ID:???まともな答え返ってこない事は分からんか
0759nobodyさん
2007/08/22(水) 21:15:13ID:???インストールしたフォルダにextフォルダもlibmysql.dllもありません
なんでですか
0760nobodyさん
2007/08/22(水) 21:25:50ID:???0761nobodyさん
2007/08/22(水) 21:27:10ID:???0762759
2007/08/22(水) 21:36:30ID:???0763nobodyさん
2007/08/22(水) 22:47:16ID:???優先したいフィルタは普通は一番最後に適用すると思うけど。あと包括も意味がよくわかんね。包含でもなんか違う気がするし。
まぁそれはおいといて、否定の言明でいけるはず。ゲンメーっつうのはマッチしても置換対象にはならない奴の事。
書き方はマニュアルのPCREのパターン構文の項をよく読めばわかる。
0764nobodyさん
2007/08/22(水) 23:24:24ID:???phpinfo();で表示される情報では
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File (none)
となります
これはphp.iniが読み込まれていないという事ですよね
解決法を教えてください
■ このスレッドは過去ログ倉庫に格納されています