【PHP】下らねぇ質問はID出して書き込みやがれ 90
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001●
2009/11/14(土) 17:31:22ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0831nobodyさん
2009/12/03(木) 22:52:17ID:ZvKoTbw+そこなんですよね。
今の環境(PHP5.2.5)だと、?にすらならずにNULLで返ってくることがあるという。。。
さっき教示いただいた方法と、mb_encode_numericentityの方法とを試してみます。
SJISとのコード範囲が直接対応しないので今泣いてますw
>>830
ちゃんと脳内補完しておりました。いろいろありがとうございます。
もし躓いたらアドバイスいただけるとうれしいです。。。
0832nobodyさん
2009/12/03(木) 23:02:23ID:???↓
$return .= "&#".hexdec(bin2hex(mb_convert_encoding(mb_substr($string,$i,1,"UTF-8"),"Unicode","UTF-8"))).";";
マルチバイト考慮してなかったわ、、頭が回ってないな
0833nobodyさん
2009/12/03(木) 23:12:10ID:ZvKoTbw+Unicode.orgのJIS資料見てました。さんくすです。
0834nobodyさん
2009/12/04(金) 00:51:20ID:pWkVeJ5Lほんとうにありがとうございました。解決しました。
SJISのテーブルを配列で持って、in_arrayで判定していますが
ちょっとロス多いし重いので改善します。
0835nobodyさん
2009/12/04(金) 01:09:35ID:???$string = "【PHP】下らねぇ質問はID出して書き込みやがれ 90";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
$now = mb_substr($string,$i,1,"UTF-8");
if(preg_match("/[\0-\ff]|[ -滌]|[漾-K]/",bin2hex($now)) == 1) {
$return .= $now;
}else{
$return .= "&#".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
}
}
正規表現で纏めると楽。
動かしてないからバグ含むかもしれないが
0836nobodyさん
2009/12/04(金) 01:10:53ID:???0837nobodyさん
2009/12/04(金) 01:23:42ID:pWkVeJ5Lあー。範囲をざっくりでよければそれが楽だし早そうですね。
かなり遅くなって、2000レスくらいあるとタイムアウトになるのでw
明日起きたら修正してみます。
本当に助かりました。ありがとう。
0838nobodyさん
2009/12/04(金) 01:28:11ID:pWkVeJ5L…あれ?
眠くて頭回ってないんですが、preg_replaceつかえばfor回さなくていけそうな気が。
起きたらやってみます。スレ汚しすみませんでした。
0839nobodyさん
2009/12/04(金) 01:51:51ID:???漢字の表にらめっこしてて気づいた。UTF-8の[漾-K]とsjisの[漾-K]は違う、と
なのでPHPに直接漢字を書いたら意味を成さない
mb_convert_encodingでshift_jis範囲外の文字をshift_jisに変換すると\x0-\xffの範囲に収まる文字に化けることに気づいたので
書いてみた。これで今度こそちゃんと動くはず
<?php
$string = "ここにsjis範囲外の文字を混ぜてみるといいよ";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
$now = mb_substr($string,$i,1,"UTF-8");
$sjis = mb_convert_encoding($now,"Shift_JIS","UTF-8");
if(preg_match('/^[\x0-\xff]$/',$now) == 1) {
//半角文字はスルー
$return .= $now;
}else if(preg_match('/^[\x0-\xff]$/',$sjis) == 1) {
//半角文字ではないのにsjisに変換したら半角文字になったらsjis範囲外と判定
$return .= "?".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
}else{
//それ以外は対応していると判定
$return .= $now;
}
}
echo $return;
?>
0840nobodyさん
2009/12/04(金) 08:37:23ID:k0I4hXn9出勤途中なんであとでためしてみます。
現状の方法だと、sjisにあるunicodeのコード表を持っているためかメモリ•時間のコストが高いです。
最終的に一文字ずつの処理がネックにならなければいいのですが。。
0841nobodyさん
2009/12/04(金) 09:30:36ID:???変換できない文字もなんとかしたいなら
mb_substitute_character("long");
0842nobodyさん
2009/12/04(金) 09:57:19ID:bmPzZ+0rうわわわわ。1行で解決しちゃった。この関数知りませんでした。。。
本当にありがとうございます。
longで出した後に、該当だけpreg_matchで数値参照形式に置換しました。
速度も従来と同じですし快適です。
>>839, >>841 重ね重ね御礼です。ありがとうございました。勉強になりました。
0843nobodyさん
2009/12/04(金) 10:10:50ID:???うーん。よく見たら期待するunicode値がでないですね。。。
&#9992;になって欲しいところ、出力は&#2708;(U+2708)
0844nobodyさん
2009/12/04(金) 10:28:04ID:???0845nobodyさん
2009/12/04(金) 10:51:45ID:???0846nobodyさん
2009/12/04(金) 14:13:59ID:QlPFqhzQ$NewID=10;
$NewFile = @fopen("ID/"+$NewID+".txt, "w");
のようにファイル名の中に変数を用いたいのですが、どうすればいいのでしょうか?
0847nobodyさん
2009/12/04(金) 14:20:48ID:???0849nobodyさん
2009/12/04(金) 14:27:42ID:???0850nobodyさん
2009/12/04(金) 15:03:29ID:???0851nobodyさん
2009/12/04(金) 15:06:45ID:???0852nobodyさん
2009/12/04(金) 15:08:19ID:???これと
"ID/{$NewID}.txt"
これとかは許せるけど
"ID/".$NewID.".txt"
これだけは許せない。
0853nobodyさん
2009/12/04(金) 15:10:08ID:???0855nobodyさん
2009/12/04(金) 15:26:59ID:???0856nobodyさん
2009/12/04(金) 16:09:48ID:++QWFr0HPHP5.2.6で実行エラーが出るので、最新版5.3.1をインストールしました。
これでDOS上は問題なく動いたので、Apache(Localhostサーバー)を
試すため下記の phpinfo.php をFireFoxで実行したところ、PHPのバージョンが
5.2.6のままでした。
<?php
phpinfo();//上の行の <? タグが消えています
?>
php -v で確認したところ、やはりDOSでは5.3.1です。
これって、動作上の不具合は起きますか?(今のところ起きていませんが・・・)
0857nobodyさん
2009/12/04(金) 16:10:01ID:???変数展開必要かどうかで使い分けて欲しい。
0858nobodyさん
2009/12/04(金) 16:12:35ID:???0859nobodyさん
2009/12/04(金) 16:16:03ID:???php -vとやって実行されるのはphp.exe
apacheで読み込まれるのはphp5ts.dllで違うモノ。
apacheの再起動はした?もししているのなら
apacheが読み込んでいるDLLが5.2.6の奴を読み込んでいる。
httpd.confを確認して。
0860846
2009/12/04(金) 16:18:56ID:QlPFqhzQ0861nobodyさん
2009/12/04(金) 16:24:16ID:g07CCDF2【PHPのバージョン】php5.2.6
【連携ソフトウェア】MySQL
【質問内容】
ブログ作りに挑戦していて、これからいよいよメイン画面を作るところです。
毎日1エントリ投稿して、各エントリにコメントが10件つくとすると、
約3年でコメントが10,000件になってしまいます。
レコード数の増大によって速度が落ちるのを防ぐ対策が必要でしょうか?
数エントリごとに新たにデータベースのテーブルを作って、テーブル一つ一つの
サイズが大きくなりすぎないようにしないといけないのでしょうか。
良い方法をご教示いただければ幸いです。
0862nobodyさん
2009/12/04(金) 16:32:27ID:???サーバスペックが書いてないが、1万レコード程度では問題にならんと思うぞ
その程度の規模なら、最低限の事としてINDEXを貼って、定期的にanalyzeしとけばまず平気
あとはPHPの話ではなくDBの話になるからスレ違い。
0863856
2009/12/04(金) 16:40:23ID:???すいません、DOSではなくコマンドプロンプトです。
あと、再起動しようとしましたがStopが無効だったので、Exitをしたら
タスクトレイからApacheが消えてしましまいした。
復旧のため、Apacheのhttpdがあるbinディレクトリより \bin>httpd start
としましたが、駄目でした。どうしたら良いでしょうか?
0864nobodyさん
2009/12/04(金) 16:43:54ID:???0866nobodyさん
2009/12/04(金) 16:55:35ID:???0867nobodyさん
2009/12/04(金) 16:59:14ID:???0868nobodyさん
2009/12/04(金) 17:00:20ID:???Apache再起動5秒〜10秒
0869861
2009/12/04(金) 17:04:22ID:g07CCDF2まだローカルでしか動かしてませんが、完成したら無料のレンタルサーバに置く予定です。
10,000件でも100,000件でも大丈夫なんでしょうか・・・。
analyzeというのは何のことかわかりませんが、これから調べてみようと思います。
INDEXというのはテーブルの主キーになる連番のことですよね?
PHPの質問だと思ってここに書きましたが、おっしゃるとおりDBのことなので、
わからなかったら今度は該当するスレに行こうと思います。
ありがとうございました!
0870nobodyさん
2009/12/04(金) 17:07:55ID:???その書込みはちょっとズレすぎじゃないか?
>>869
レン鯖なら容量が決まってると思うので、そっちを心配した方が良い
0871nobodyさん
2009/12/04(金) 17:12:57ID:???0872856
2009/12/04(金) 17:18:30ID:???有難うございます。
binにあるApacheMonitorをダブルクリックしてタスクトレイに
ApacheMonitorを復帰させることは出来ましたが、Startを選択すると
下記のメッセージが現れます。
http://uproda.2ch-library.com/193874eFA/lib193874.png
すいません、アドバイス願います。
0873nobodyさん
2009/12/04(金) 17:20:16ID:???0874nobodyさん
2009/12/04(金) 17:30:01ID:???状況を整理するぞ、違ってたらごめんな
1.php5.2.6が正常動作
2.その状態でphp5.3.1をインストール(apacheの再起動は行ってない)
3.>>856 の状態になる
4.apacheの停止でエラー、起動させると>>872のエラーがでる。
これであってるなら、httpd.confの整合性がとれない可能性がでかい
httpd.confのLoadModuleとかで読み込んでいるファイルが存在するのか確認して。
php5.3.1入れたんだから、php5.3.1のファイルを指定しないと駄目だよ
っていうかエラーメッセージで検索してみな、いっぱいでてくるから。
0876861
2009/12/04(金) 18:08:51ID:g07CCDF2> レン鯖なら容量が決まってると思うので、そっちを心配した方が良い
100MBくらいあれば問題ないと思ってました。。
実際に運用を始めたら、ときどき使用容量を確認しようと思います。
アドバイスありがとうございました。
0877856&874
2009/12/04(金) 18:12:47ID:???が・・・ Restartしてもphpinfo.phpでは5.2.6のままです。
(つまり、>>856の状態に戻りました)
> httpd.confのLoadModuleとかで読み込んでいるファイルが存在するのか確認して。
確認したところ、LoadModule php5_module "c:/php5/php5apache2_2.dll" となって
いるもののphp5内にphp5apache2_2.dllがありませんでした。
幸い、バックアップを取っていたphp5apache2_2.dllがあったのでこれを流用しました。
>>874
流れ的には、
PHP5.2.6で実行エラー
→ 5.3.1に変える(php -v で確認)
→ phpinfo.php をFireFoxで実行したところ、PHPのバージョンが 5.2.6のまま
→ ApacheMonitorを再起動しようとするとStopが無効だったので、
ExitをしたらタスクトレイからApacheMonitorが消えた
→ ApacheMonitorは復活したが、Startを選択すると下記のメッセージが現れる
http://uproda.2ch-library.com/193874eFA/lib193874.png
です。なので>>854さんの1,2が違います。
>>875
Cドライブ直下のphp5内です。
0878nobodyさん
2009/12/04(金) 18:24:29ID:???バージョンが5.2.6のままなのは、
php5apache2_2.dllが古いからかも。
PHP5.3.1のphp5apache2_2.dllを上書きしてみたら?
0879nobodyさん
2009/12/04(金) 19:02:52ID:???その変数内にスラッシュが含まれているとエラーになるみたいなんですが何か対処法はありませんか?
もし問題なければそう言って頂ければ幸いです。宜しくお願いします。
0881nobodyさん
2009/12/04(金) 19:09:52ID:fvCG6CPk0883nobodyさん
2009/12/04(金) 19:14:54ID:fvCG6CPkありがとうございました
0884nobodyさん
2009/12/04(金) 20:56:52ID:???変数の正規表現するときくらいはかまってあげてください
0885nobodyさん
2009/12/05(土) 17:16:42ID:???【PHPのバージョン】php5.2.6
【連携ソフトウェア】MySQL
【質問内容】
ブログを作っていて毎日記事を書いているとアクセスが増えてきてコメントがたくさんつくように
なりました。コメントの表示はreadfile("txt")としてましたが一ページのコメント量が
多いページになると読み込みが重くなるので分散したいと考えDBの利用を検討してます。
例えばpageというフィールドを作って1とか2といったレコードを記録して参照時は
WHERE page = 1 LIMIT 0, 5みたいなSQLを発行した方がいいのか
ページごとにテーブルを作った方がいいのか迷ってます。(ページ総数は1000ページ)
読み込み時の負荷の軽い方はどちらでしょうか?
0887nobodyさん
2009/12/05(土) 19:08:17ID:???0888nobodyさん
2009/12/05(土) 19:47:59ID:???0889nobodyさん
2009/12/05(土) 19:48:54ID:???0890nobodyさん
2009/12/05(土) 20:01:38ID:39Sh3r0ZPHPから値(data1,data2)を送信するとき、引用したサイトでは下の
ように書いてありました
echo '&data1='.$data1.'&data2='.$data2;
※引用 ttp://wiki.minaco.net/index.php?Flash/%E9%96%A2%E6%95%B0/LoadVars
この記述(引数の参照渡し)自体は問題なく動作したのですが、
本によると
「引数の参照渡しはコードの見通しが悪くなるので、無闇に使う
のはやめましょう」
とありました。
そこで質問ですが、上記の「echo 〜」の別の表現にはどのようなものが
あるのでしょうか?
0891nobodyさん
2009/12/05(土) 20:08:37ID:???0892nobodyさん
2009/12/05(土) 20:10:43ID:???0893nobodyさん
2009/12/05(土) 20:13:04ID:???0894nobodyさん
2009/12/05(土) 20:43:30ID:???ページ毎にテーブルを作った方が元取れんぞ
焼肉食べ放題でも元取れるまで食うだろ。それと一緒だ
どんどん使え 食え! 食エリ!
なんちゃってwwwwww
0895nobodyさん
2009/12/05(土) 20:48:20ID:???0896nobodyさん
2009/12/05(土) 20:52:30ID:???ただし多重起動しないように、起動時にチェックしてすでに常駐してるなら終了、
みたいな処理させたいのでおそらくプロセスIDを見て処理するのだと思うんですが
Vistaの場合にはどうしたらいいんでしょうか。
0897nobodyさん
2009/12/05(土) 20:53:22ID:2rpAUHym特定のphpファイルを常時起動させときたいんでスケジューラで一定タイミングごとに起動させようと思います。
ただし多重起動しないように、起動時にチェックしてすでに常駐してるなら終了、
みたいな処理させたいのでおそらくプロセスIDを見て処理するのだと思うんですが
Vistaの場合にはどうしたらいいんでしょうか。
0898nobodyさん
2009/12/05(土) 21:11:22ID:???0899890
2009/12/05(土) 21:16:33ID:???”参照渡し”と”値渡し”というのは、Cにおけるポインタ
みたいなものでしょうか?
つまり、出席番号21番の鳩山君という定義があったとき、
彼を検察が呼び出すとき、
参照渡し)「出席番号21番出頭しなさい」
値渡し)「鳩山君出頭しなさい」
という違いですか? これが正しいとして、'&data1='の『&』の
役割りが分かりません。
0902nobodyさん
2009/12/05(土) 21:36:01ID:???0905nobodyさん
2009/12/05(土) 22:41:45ID:???0906nobodyさん
2009/12/05(土) 22:43:44ID:???っていうかwindowsなのにIIS使わない理由は何?
MS様がサポートしてくれるのに。
0908nobodyさん
2009/12/05(土) 22:59:29ID:???調子のりすぎた。
カンファレンスのスポンサーにもなってるのに、PHP on IISの話は全然でてこないなーと思って。
http://technet.microsoft.com/ja-jp/iis/ee794964.aspx
0909nobodyさん
2009/12/05(土) 23:20:54ID:???今すぐ土へ還るんだ
0910nobodyさん
2009/12/06(日) 00:39:40ID:NcEl5Lj3http://page2.xrea.jp/#php_mecab
http://cvs.php.net/viewvc.cgi/pecl/chasen/
こういうのが見つかったんですがcのファイルだけ置いてあってREADMEにVisualStudioでビルドしろって書いてありますが
これらはわざわざ製品買ってコンパイルしてやらないとphpで使えないってことでしょうか。
0911nobodyさん
2009/12/06(日) 01:06:36ID:???0912nobodyさん
2009/12/06(日) 01:48:25ID:???0913nobodyさん
2009/12/06(日) 02:07:54ID:lUTuxG8hC言語にも参照渡しあるでしょ。
アドレス渡しとか参照呼び出しとかとも言ったと思うけど。
0914nobodyさん
2009/12/06(日) 02:18:20ID:???0915nobodyさん
2009/12/06(日) 05:06:29ID:???0916nobodyさん
2009/12/06(日) 06:28:24ID:C3/Ead/T次回同じページを見るときに、GETリクエストで、
http://example.com/?a=1&b=1&c=1&d=1&e=1&f=1
みたいな感じでアクセスすると同じページが生成されますが、
ページによるとなんか暗号化?みたいにしてサーバ側でデコードしてやってるとこがありますよね?
http://example.com/aHwh2iuAwuihs2
みたいなランダムな文字列で。
これってどういう風にやるのでしょうか?
0917nobodyさん
2009/12/06(日) 09:58:37ID:???0918nobodyさん
2009/12/06(日) 10:27:22ID:C3/Ead/Tなんかそういう関数があるのでしょうか?
base64関数はありますが、これはちょっと用途的に違うような気もしますし。
0919nobodyさん
2009/12/06(日) 10:43:11ID:???・ランダムでユニークな文字列を作成して、
ユニークIDとGETの値をDBに入れておく
・GETの値で使用する値を取得、serialize+pearの暗号化+base64の組み合わせ
まぁ暗号化が一番バランスいいかなと
0920nobodyさん
2009/12/06(日) 10:47:42ID:C3/Ead/Tありがとうございます。
調べてちょっとやってみたいと思います。
0923nobodyさん
2009/12/06(日) 18:15:21ID:Sn8eXDuLPHP4向けのサンプルプログラム(書籍添付CDのコピー)を
PHP5の環境で動かしています。
フォームに"名前"を入力したら、「"名前"さん、ようこそ」と表示する
簡単なものですが、"名前"が表示されずに「さん、ようこそ」と表示されます。
HTMLやPHPソースの名前の変数名は一致しています。
フォームでの変数名指定、フォームの変数参照の規約は
PHP4とPHP5と違うのでしょうか?
0924nobodyさん
2009/12/06(日) 18:18:10ID:???0925923
2009/12/06(日) 19:05:20ID:Sn8eXDuLレスありがとうございます。
でもビックリです。
4から5に上げる時、みなさん修正されたんでしょうか?!
0926nobodyさん
2009/12/06(日) 19:06:54ID:???0927nobodyさん
2009/12/06(日) 19:07:38ID:???0928nobodyさん
2009/12/06(日) 19:13:03ID:???0929nobodyさん
2009/12/06(日) 19:16:51ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。