【PHP】下らねぇ質問はID出して書き込みやがれ 98
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/09/18(土) 19:20:37ID:???過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0341nobodyさん
2010/09/24(金) 11:15:05ID:???0342327
2010/09/24(金) 11:29:29ID:???それだと、パスがサーバ毎に変わると思うんです。
それにあまりコマンドを実行するのも不安ですし。
とりあえず、もう少し調べます。
0343nobodyさん
2010/09/24(金) 11:34:16ID:???というか頻繁に表示されるページに<img src="cron.php" width=1> みたいに埋め込んで
やればいいんじゃないか
0344nobodyさん
2010/09/24(金) 11:35:52ID:???0345327
2010/09/24(金) 11:40:00ID:???それも試しましたが、処理に時間がかかる場合は
ずっと読み込み中になります。(cron.phpにsleppを入れてテストしました)
wordpressのcronってそんなのがあるんですね。ちょっと調べてみます。
0347nobodyさん
2010/09/24(金) 12:45:49ID:NDRyKYW2これって、継承先で、オリジナルのクラスに既にあるクラスのメソッドやプロパティを
丸ごと利用できつつ、新しいメソッドを加えたりプロパティの値を変更して使える機能だと
理解してるんですが間違いないでしょうか?
そうだとすると、継承先で「メソッドを加えたり値を変更したり」しないのであれば
継承する意味がない(継承先クラスの中身{}の記述がカラになる)から
最初からオリジナルのクラスを利用すれば良いってことですよね?
0348nobodyさん
2010/09/24(金) 12:56:30ID:???向こうはこの時間でもアクティブユーザー多いから
0350nobodyさん
2010/09/24(金) 13:13:43ID:???その考え方でだいたい合ってるよ。
でも中身に変更のない場合でも継承して定義することもあるよ。
わかりやすくするためとかの目的でね。
例えばJavaにあってPHPにはないFileNotFoundExceptionっていう例外があるんだけど、
名前の通りファイルが見つからなかった時投げる例外と分かるから、
class FileNotFoundException extends Exception {
}
と、これだけ書かれたクラスをPHPで定義してたりそういうこともするよ。
0353nobodyさん
2010/09/24(金) 13:32:14ID:???http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/FileNotFoundException.html
本家も継承するだけで何もしてないよ
0354nobodyさん
2010/09/24(金) 13:52:50ID:???別にそれがダメって言ってる訳じゃないよ
class FileNotFoundException extends Exception {
}
これはちゃんと
ファイルが無いエラーだよ
っていう意味があっての継承で
ただ解りやすくするためというのは若干違う
ただエラーだよと返す事もできるが
それじゃcatchした時に詳細がわからんからな
継承は継承元の一種で振る舞い等が違うから継承するのであって
上書きできるから継承するっていうのは継承としてはどうなの?という事
実際コード書く上では上書きするために継承するとかの方が楽だけどね
0355nobodyさん
2010/09/24(金) 16:29:12ID:???俺的には凄い違和感あるんだけど、必要なんだろうね。
0356nobodyさん
2010/09/24(金) 18:44:38ID:5mEmp/FRという変数があり、if文で
if($a == ""){
}
という判定をかけると、なぜかこの処理の中に入ってしまって
いるようです。
これは正常な動作なのでしょうか?
また、正常系の場合、通常この処理はどのように行うべきか
ご教示いただけますと幸いです。
よろしくお願いいたします。
0357nobodyさん
2010/09/24(金) 18:45:56ID:???0358nobodyさん
2010/09/24(金) 18:54:41ID:???0359nobodyさん
2010/09/24(金) 18:57:56ID:5mEmp/FR即レス感謝です。
やはり "" と 0 は等価だったんですね。
こないだまでPerlをやっていたので、ここで結構つまずきました。。
ありがとうございました。
0360nobodyさん
2010/09/24(金) 19:01:24ID:???一度は型のきつい言語に触れてくれ…
0361nobodyさん
2010/09/24(金) 19:01:29ID:5mEmp/FR$a === ""
と書くことで、「$aは定義されているけど空文字」という
意味になるのでしょうか。
すみません。
0362nobodyさん
2010/09/24(金) 19:04:06ID:???Perlも使ってる俺の肩身が狭くなるっ!
0363nobodyさん
2010/09/24(金) 19:05:50ID:5mEmp/FR不快な思いにさせてしまいごめんなさい。
これ以上書きませんので許してください。
失礼しました。
0364nobodyさん
2010/09/24(金) 19:08:09ID:BFSvi/T0詳しく見てないけど
こんなのやってくれてる人いるよ
もう一度言う 詳しくは見てない
0365nobodyさん
2010/09/24(金) 20:00:09ID:???マニュアルにあるし
0366nobodyさん
2010/09/24(金) 22:45:19ID:39V4jcsO0367nobodyさん
2010/09/24(金) 22:50:29ID:???ていうかスレ違い
0370nobodyさん
2010/09/25(土) 02:34:21ID:???ブラウザの描画がブロックされるのは
XMLHttpRequest#open() を同期で呼んでしまってるとか組み方に問題がある
分からなかったらJavaScript板で聞いてくれ
>>366
echo でもいいし、HTMLと同じように <?php ?> の外へ書いてもいい
あと Content-Type ヘッダにphp.iniの default_mimetype(デフォルトだと"text/html") が使われるんで
必要なら header('Content-Type: application/xml'); などセットしてやる
0372nobodyさん
2010/09/25(土) 03:19:57ID:???取得っていうからてっきり藏側の話かと思ったわ
クライアントに送出するxmlやらjsonやらってことね
0373nobodyさん
2010/09/25(土) 07:55:42ID:5eiUdC6Bのような複数スペースが空いてるのを
「aaa bbb」というように1つにするにはどうすればいいのでしょうか?
str_replaceで置換すると思ったのですが、
同じ文字を複数→1つに出来ないと思い、質問しました。
0374nobodyさん
2010/09/25(土) 08:26:08ID:/+0QJSqIwhile ($row = $res -> fetchRow(MDB2_FETCHMODE_ASSOC)){
とやると、DBが並んでるデータ順にでてくるんですが、
$res = $mdb2 -> query('SELECT * FROM `foo` order by key');
while ($row = $res -> fetchRow(MDB2_FETCHMODE_ASSOC)){
とやると(keyは主でINT型です)
Fatal error: Call to undefined method MDB2_Error::fetchRow() in (whileのある行)
というエラーがでます
どういうことで、どうしたら直りますでしょうか
0375374
2010/09/25(土) 08:30:29ID:/+0QJSqIorderのところをvarchar型(アルファベットがはいってます)で照合順序utf8_unicode_ciにしているものに変えるとちゃんと五十音順に表示されました
INT型だとなにか特殊な指定などがいるんでしょうか?
0376nobodyさん
2010/09/25(土) 09:01:44ID:???if (MDB2::isError($res)) {
var_dump($res->getMessage());
}
とでもして中身みれば?
0377nobodyさん
2010/09/25(土) 09:13:34ID:???回答ありがとうございます
string(24) "MDB2 Error: syntax error"
というエラーが出てます
並べ替えするのに照合できないなにかがあるんでしょうか
keyには数字しかはいってません(auto_incrementで自動で連番になってるだけです)
種別はINTです
0378374
2010/09/25(土) 09:23:29ID:???keyっていうフィールド名は使わないほうがよいんでしょうか
0379nobodyさん
2010/09/25(土) 09:25:50ID:???DB側としては``で括ってないからSQLの構文エラー返してるんだよ
0382nobodyさん
2010/09/25(土) 09:32:54ID:???まあなんだ、テーブル名のfooをちゃんとバッククオートで囲んでるのに、
keyの方は剥きだしってのを直したら、keyって名前のままでもいけるかもね。
でも、
>keyっていうフィールド名は使わないほうがよいんでしょうか
その方が習慣としては良いと思う。
0383nobodyさん
2010/09/25(土) 09:38:34ID:???予約語でもバッククオートで括れば予約語ではないフィールド名として扱えるってことですね
危なそうな単語は使わないように習慣づけます
ありがとうございました
0385nobodyさん
2010/09/25(土) 12:10:01ID:Ra4M62ePあれはどうやって作ってるんですか?
0386nobodyさん
2010/09/25(土) 12:10:45ID:Ra4M62eP×tukaeruyo
○tasukeruyo
0388nobodyさん
2010/09/25(土) 13:13:30ID:???ソース見てないからテキトーだけど
if(ereg("fusianasan",$name)){
$name=$ip;
}
みたいな処理をすればよいんじゃね?
要は名前がこうだったらこうするよってだけだし
0389nobodyさん
2010/09/25(土) 13:22:17ID:Ra4M62eP0390nobodyさん
2010/09/25(土) 13:46:46ID:???0391nobodyさん
2010/09/25(土) 13:56:53ID:???0392nobodyさん
2010/09/25(土) 14:47:49ID:???2chの仕様通りじゃないけどこんな感じでやればいい
0394tasukeruyo
2010/09/25(土) 15:10:08ID:???0395nobodyさん
2010/09/25(土) 16:09:02ID:???"php" == 0 の件、
文字列と数値の比較の場合は文字列が数値にキャストされるので
"php"は0と評価され、trueとなります。
なので>>356の例($a = 0 で $a == "")は、>>357-359の解釈は若干誤りで、
""(空文字列)が数値にキャストされて0と評価されるのでtrueとなります。
>>361のように $a === "" とした場合は、値は同値ですが型が異なるのでfalseとなります。
0397nobodyさん
2010/09/25(土) 17:13:39ID:???PHP5.3だとエラーになる
0398nobodyさん
2010/09/25(土) 17:15:20ID:???ttp://events.php.gr.jp/events/show/101
ttp://phpcon.php.gr.jp/2010/
行けない人は→ttp://www.ustream.tv/channel/phpcon2010-a
0400nobodyさん
2010/09/25(土) 17:16:52ID:W1bFgA20〜が含まれる場合、というのはどう書くのが推奨なんでしょうか?
perlだと
if($foo =~ /bar/){
みたいに書きますけど、phpだとエラーになりました
現在は、>>388と同じようにeregを使ってるんですが、使わない方がいいのでしたらよい書き方をしたいです
よろしくお願いします
0401nobodyさん
2010/09/25(土) 17:20:05ID:???マニュアルに代替の関数書いてあるから嫁
ttp://php.net/manual/ja/function.ereg.php
0402nobodyさん
2010/09/25(土) 17:31:28ID:W1bFgA20ありがとうございます。
if(preg_match("/bar/",$foo)){
に変更することにします
0403nobodyさん
2010/09/25(土) 17:35:30ID:???strposとかでいいよ・・・
0404nobodyさん
2010/09/25(土) 17:42:25ID:???if(strpos($foo,"bar")){
存在すれば位置を返すからtrueになるって解釈でいいんでしょうか?
ありがとうございます。
0405nobodyさん
2010/09/25(土) 18:15:47ID:???0406nobodyさん
2010/09/25(土) 18:17:42ID:???if("" != strpos($foo,"bar")){
こうでしょうか?
preg_matchよりstrposの方が処理が速いんですかね
0407nobodyさん
2010/09/25(土) 18:32:04ID:lqN4c8Xi例えば最初"http://hibari.2ch.net/php/" "php" と登録したら
serach.txt
--------------------------------
http://hibari.2ch.net/php/,php,【PHP】下らねぇ質問はID出して書き込みやがれ 98,【PHP】フレームワーク CakePHP 9ホール目【1.3】,...
--------------------------------
つぎに"http://hibari.2ch.net/php/" "google" と登録したら
serach.txt
--------------------------------
http://hibari.2ch.net/php/,php,【PHP】下らねぇ質問はID出して書き込みやがれ 98,【PHP】フレームワーク CakePHP 9ホール目【1.3】,...
http://hibari.2ch.net/php/,google,Google AppEngine 3アプ目,Google App Engine 3アプ目,...
--------------------------------
となるような感じでカンマ区切りで記録していきたいです.
テキストの保存の方法でもっといい方法はありますか?
0410nobodyさん
2010/09/25(土) 18:57:55ID:???これがインストールされていれば .htaccess 内で特定の国からのアクセスは禁止したり
違うページに誘導できたりするようになるのですが、いま使っているレンタルサーバーに
このGeoIPがインストールされて使える状態になっているかどうか調べるにはどうしたらいいでしょうか?
0412nobodyさん
2010/09/25(土) 19:03:21ID:???http://pecl.php.net/package/geoip
これの事を言っているのなら、peclコマンドで入ってるかどうか調べてみては?
ただ別途ライブラリも必要みたいだけど。
0413nobodyさん
2010/09/25(土) 19:16:11ID:???subject.txt使って文字列抜き取れば
http://hibari.2ch.net/php/subject.txt
0414nobodyさん
2010/09/25(土) 19:17:31ID:???インストールされてなくて入れられなければVPSに乗り換えるのも検討する
今は低価格で良いサーバが借りられるし
0415nobodyさん
2010/09/25(土) 19:28:46ID:???相手が嫌がらせでちょっとタグ変えただけでオワル
APIがないとこからは取る気おきない
0416410
2010/09/25(土) 19:54:12ID:???レンタルサーバーなので特定のコマンドを打って動作を確認することができないのが痛いところです・・・
>>414
最近じゃ月300円くらいから使えるレンタルサーバーとかありますよね
0417nobodyさん
2010/09/26(日) 00:27:13ID:???とするべきところを間違えて
<?php $_SERVER['SCRIPT_NAME'] ?>
と書いてしまったところ,動きました.
これはやってはいけないやり方でしょうか?
0418417
2010/09/26(日) 00:30:42ID:???自己解決というか勘違い.
はずかすい
0419nobodyさん
2010/09/26(日) 02:08:52ID:XvkZ4p7S上記の文字列の<a></a>で囲まれた部分に関数(今回はurlencode)
を適用したいのですが、何かよい方法はありませんか?
preg_replaceを使用し、\\2などの元文字に関数を
適用したいと思ったのですがうまくいきませんでした。
どなたかご教授お願いします。
0420nobodyさん
2010/09/26(日) 02:16:38ID:???0422nobodyさん
2010/09/26(日) 04:37:39ID:XvkZ4p7S掲示板のユーザーから受け取った文字列を書き換えたいので、ダメなのです。
すみません。
>>421
$val = "あの<a>2ちゃんねる</a>がモバイルに";
preg_replace(/(<a>)(.+)(<\/a>)/","<a href ='./index.php&word=\\2'>ひろゆき</a>",$val);
($valは変動する文字列と考えてください。)
\\2の部分にurlencodeやセキュリティー対策の関数を適用したいのです。
preg_replaceでなくともいい方法があればお願いします。
0423nobodyさん
2010/09/26(日) 05:23:46ID:???それをencodeしたものをpreg_replaceで置き換える
<?php
$val = "あの<a>2ちゃんねる</a>がモバイルに";
$regex = "/<a>(.*)?<\/a>/";
if (preg_match($regex, $val, $matchs)) {
$enc = urlencode($matchs[1]);
$val = preg_replace($regex, "<a href=\"./index.php&word={$enc}\">ひろゆき</a>", $val);
}
echo $val;
0424nobodyさん
2010/09/26(日) 05:53:28ID:XvkZ4p7Sありがとうございます。
wikipediaっぽく、受け取った文章中のすべての<a>○○</a>を
置き換えたいのです。
提示していただいた方法だと、複数の対象ができた場合、
preg_matchで取得したものを、置き換える場所に個々に一致させる必要があります。
できれば一度の処理で変換できる方法はないでしょうか?
0425nobodyさん
2010/09/26(日) 05:55:57ID:???0426nobodyさん
2010/09/26(日) 05:56:17ID:???function lnk($matches) {
$url = './index.php?' . http_build_query(array('word' => $matches[1]), '', '&');
return sprintf('<a href="%s">ひろゆき</a>', htmlspecialchars($url, ENT_QUOTES));
}
$val = "あの<a>2ちゃんねる</a>がモバイルに";
echo preg_replace_callback('#<a>(.+?)</a>#s', 'lnk', $val);
0427nobodyさん
2010/09/26(日) 06:45:51ID:XvkZ4p7Sうわぁ一見では理解できない・・・。
ありがとうございます。
これでいいのかどうかが、私のレベルではわからないので
>>426をじっくり解析しながら勉強して出直してきます。
みなさん本当にありがとうございました。
0428nobodyさん
2010/09/26(日) 13:13:49ID:???/home/○○○/Smarty/common.php on line 145
ってエラーが表示されるのですがどうすればいいでしょうか?
0431nobodyさん
2010/09/26(日) 13:22:15ID:???0433nobodyさん
2010/09/26(日) 13:25:07ID:???http://php.net/manual/ja/function.ini-set.php
ini_set("memory_limit", 128M);
の一行をファイルに追加しとけばいい
0434nobodyさん
2010/09/26(日) 13:34:02ID:???配列のキー指定時なんかにダブルクォーテーションかシングルクオーテーションかで悩む
コードの出所によってバラバラだったりして結局ソース内に混在して
気持ち悪いがわざわざ統一する理由もない
お前らどうしてますか?気にしない?
0435428
2010/09/26(日) 13:44:23ID:???追加したのですがFatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 512 bytes) in
/home/○○○/Smarty/common.php on line 145
と表示されます。tried to allocate 35 bytesが512と変わっただけみたいです。
記入ミスとかでしょうか?
0436nobodyさん
2010/09/26(日) 14:20:01ID:???自分はZend Framework PHP 標準コーディング規約を基準にしてる
http://framework.zend.com/manual/ja/coding-standard.coding-style.html
0437nobodyさん
2010/09/26(日) 14:23:07ID:???オレオレ仕様に半分なってるわ
0438nobodyさん
2010/09/26(日) 15:16:49ID:???という妄信的な理由でそっち使ってる。短いコードだからそんな微妙な早さとか関係ないんだけどね
0439nobodyさん
2010/09/26(日) 15:18:54ID:???■ このスレッドは過去ログ倉庫に格納されています