【PHP】下らねぇ質問はここに書き込みやがれ 34
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/12/08(金) 04:22:54ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0555nobodyさん
2006/12/13(水) 22:31:28ID:???なるほど。それは知らなかった。
>どこのコーディング規約でもたいてい禁止されてる。
では早速、禁止されてる有名なプロジェクトあげてみてくれる?
0557nobodyさん
2006/12/13(水) 22:39:02ID:???なんて大したことないだろ。
大口をたたいたやつは、早く三項演算子禁止のプロジェクトをあげろよ。たいていは禁止らしいか
ら山ほどあるはずだろ。
0558nobodyさん
2006/12/13(水) 22:45:55ID:???三項演算子なんて一般的じゃないし、可読性が大事だからね。
0559nobodyさん
2006/12/13(水) 22:48:33ID:???>そもそも三項演算子も理解できない、読みにくいとか言うレベルの人間が参加してるプロジェクト
>なんて大したことないだろ。
何言ってるんだ・・・
個人的に理解できてても、読みなれてても、
複数人がらみのプロジェクトなら
読みやすいほうを採用するに決まってるだろう・・・
0560nobodyさん
2006/12/13(水) 22:48:42ID:???return $a[1] < $b[1] ? -1 : $a[1] > $b[1];
〜〜〜〜〜〜
これ何か意味あるの?
0561nobodyさん
2006/12/13(水) 22:51:28ID:???お前の言うこともわかる。たしかにforeachのほうが若干すっきりするしな。
でも、pythonとかjavaをやった人間には>>500のほうがしっくりくる気がする。
PHPにはPHPの流儀があるだろうから、それぞれ好きにやればいいんじゃないの?
0563nobodyさん
2006/12/13(水) 22:55:56ID:???順番を後ろから出力する載ってどうやったらいいでしょうか?
1〜10行までデータがあった場合、10行目から出力したいのです。
0564nobodyさん
2006/12/13(水) 23:00:14ID:???自分で調べろよ。
PGになればわかるからそういう会社入れ。
禁止っていうのは言い過ぎたかもしれんが、
よほどの事情がない限り使うなとは言われるだろう。
0565nobodyさん
2006/12/13(水) 23:02:56ID:???そのままコピペしたらいけたよ。
IEでもだめかい?
header出力するまえに何も出力ないよね?
>>550
それらの文字列なら出力しないようにすればどう?
もしくはfile_get_contents使えば?
0566nobodyさん
2006/12/13(水) 23:04:43ID:2BlCBXrB送信→Now loadingの画面→送信完了ページ
のようなプログラムがありますが、これはどうやっているのでしょうか?
構造のヒントだけでもいいので、アドバイスいただければと思います。
0567556
2006/12/13(水) 23:06:35ID:???>禁止っていうのは言い過ぎたかもしれん
潔いじゃん。負け惜しみを言うよりよっぽどカコイイな。
完全に見直した>>564=>>554=>>559。きつく言って悪かったな。
0574nobodyさん
2006/12/13(水) 23:56:39ID:???0575nobodyさん
2006/12/13(水) 23:57:08ID:???0577nobodyさん
2006/12/14(木) 00:07:49ID:???0578nobodyさん
2006/12/14(木) 00:18:53ID:???ん?PHPのIteratorはforeachでまわせるってことだよ。
Iteratorの5つのメソッドを明示的に呼び出す必要はないの。
明示的に呼び出すのは、イテレーションの途中で中断してもう一回再開したり、細かいことをするために使う面もあるが、Webサイトの構築でそんなシチュエーションには残念ながら出会ったことはない。
通常はforeachを用いておけば、rewindやcurrentなど、>>500と全く同じ順序で自動的に呼び出される。
pythonやjavaをやっていると>>500がしっくり来るってのは、よーわからんな。
C++のSTLと比較するなら、しっくりくるってのもまだわかるけど。
0580nobodyさん
2006/12/14(木) 00:35:34ID:???PHPは似たような関数を各種取り揃えてる辺りからも
そういったニーズに応えようとしてるわけだから、
「PHPの構文にある限りは好きなの使えばよろしい」
でFAなんでないの?
PHPならこの書き方!みたいのはそんなに無いと思う。
(大抵は制約くらいでしかそんな場面にならない)
0581nobodyさん
2006/12/14(木) 00:43:01ID:???それ俺が知らないと思って言ってるの?何を主張したいのか全然わからないんだけど・・・。
javaの拡張for文もやっていることはイテレーション(リスト状の構造を順番に走査)なわけで。
むしろ拡張for文(=構文糖)を使うってのは、PHPでいうとfor ($lines->rewind();・・・のかわりにforeach ($lines・・・を構文糖として使うことと方向が同じじゃないか。
>>580
いや、言いたいことはわかるけど、そもそも>>500で無意味にIteratorを持ち出している点、foreachで書けるものを無意味&煩雑なfor文に展開している点などは、俺的につっこみどころなんだが。
そもそも俺の経験上、PHPのIterator自体お勧めしないものの一つだしな。
0582nobodyさん
2006/12/14(木) 00:51:48ID:6QjdxOSQ変数に文字列を格納していて、その中から特定の文字を2箇所見つけて
その間にある文字列を取り出したいのですが、どのように記述したらよいのでしょうか?
nfai_usdgvga_jgmandfak_flahogek_glangol_ialgkka
のアンダーバーから次のアンダーバーの間を取り出し、その中にhogeが含まれる時に、
別の変数に取り出すということをしたいです。
突然の質問で、大変申し訳ありませんが何卒よろしくお願い致します。
0583nobodyさん
2006/12/14(木) 00:56:35ID:???0585nobodyさん
2006/12/14(木) 01:06:07ID:6QjdxOSQ0586nobodyさん
2006/12/14(木) 02:09:24ID:???大体、explode, implode, array_search, array_shift, foreach, eregとかで、答えが出る感じに思う。
と、徹夜中のリーマンより。
0587nobodyさん
2006/12/14(木) 04:08:49ID:???0588nobodyさん
2006/12/14(木) 10:09:59ID:???一度、全部読んでおくだけで十分
0589nobodyさん
2006/12/14(木) 10:22:37ID:???あとはリファレンスを見ればいいし。
0590500
2006/12/14(木) 10:38:40ID:???オレが変な書き方をしたせいで迷惑をかけてるようで申し訳ないです。
あとから拡張とか変更が楽かな?と思って、ついくせでIteratorを使ってし
まいました。でも、みなさんの書き込みを読んでるとその必要も無さそうな
のでこれからはforeachでまわすことにしようと思います。
煽りの原因をつくってしまってすいません。
0591nobodyさん
2006/12/14(木) 10:41:27ID:???たとえばループ処理系の構文(for等)は、
breakでループを抜けさせることができるようですが、
if構文内で、処理を途中でも抜けさせるような関数はありますか?
0592nobodyさん
2006/12/14(木) 10:58:49ID:???0593nobodyさん
2006/12/14(木) 10:58:53ID:???ないよ。なぜなら必要性がないから。
処理させたくないなら、単にif文をネストして処理する条件を
増やしていけばいい。
if ($a) {
if ($b) //ここで$bがfalseならbreak;したのと同じになる
{}
//もちろん$bの評価にかかわらずここは実行されるけど、それは
//書き方を工夫するしかない。
}
0594591
2006/12/14(木) 11:07:47ID:gRu0cvf6トンクス!
あぁ、なるほど。
若干書き方を変えるだけでどうにもなりますものね。
1個勉強になりました、ありがとうございます!
0595nobodyさん
2006/12/14(木) 11:13:10ID:???全て入力されているかどうかのチェックが入っています。
入力してなかった箇所は入力してくださいと出すのですが、
送信した際、入力してた方の値もリセットされるので、
inputのvalue属性に入力した値を入れて、入力を保持した感じにしているのですが、
入力値がバックスラッシュ(\)だった場合、
なぜかバックスラッシュが2倍の数になって値に入っているようです。
これは何が原因なのでしょうか?
0597nobodyさん
2006/12/14(木) 12:39:41ID:???0598nobodyさん
2006/12/14(木) 13:05:13ID:???phpのみでフォルダごとアップロードするのって不可能でしょうか?
javaアプレットあたりとからめる方法しか思いつかないですが・・。
0599nobodyさん
2006/12/14(木) 13:22:58ID:???それはブラウザ側の問題なのでPHPの処理では無理
input=fileの制限上無理
ありえるとすればzipを鯖で解凍してディレクトリ生成後その中に展開
0600nobodyさん
2006/12/14(木) 13:44:49ID:???単一のクライアントならクライアントのほうにFTPDを立てて、
サーバーからFTP接続してダウンロードさせるってのもトリッキーながら出来る。
0601nobodyさん
2006/12/14(木) 16:53:49ID:???関数を使って処理した方が覚えるにはいいですか?
0603nobodyさん
2006/12/14(木) 17:16:12ID:???for($i = 0; $i <= strlen($str); $i++) { echo substr($str, $i); }
とか。
0606nobodyさん
2006/12/14(木) 18:32:11ID:???0607nobodyさん
2006/12/14(木) 18:36:32ID:???____
/⌒ ⌒\ ホジホジ
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ <で?マルチバイトの文字数える時はどうやるのかな?
| mj |ー'´ |
\ 〈__ノ /
ノ ノ
0609nobodyさん
2006/12/14(木) 20:25:40ID:???new XXXみたいにしてから使う関数とかもあるのですが、
これは普通の関数とは何が違うのでしょうか?
0610nobodyさん
2006/12/14(木) 21:08:15ID:IgfNuu2kまたファイルに書き込みたいのですが、流れがわかりません。
現在のやりかたは、
1.file関数でファイルAを配列に読み込む
2.不必要なデータをunset関数で配列から削除
3.削除した後の配列をファイルBに書き込む
4.ファイルAをunlink関数で削除し、ファイルBの名前をrename関数でファイルAにする
というやり方を行っていますが、もっと効率の良いやり方がありましたらご教授お願いいたします。
【テキストファイルの内容】
一行目:あか
二行目:きいろ
三行目:ぴんく
四行目:むらさき
0612nobodyさん
2006/12/14(木) 21:25:01ID:???要らない部分は流さない。
最後までいって変数の内容を元のファイルに上書き。
じゃだめなのか?
0613nobodyさん
2006/12/14(木) 21:26:23ID:???$lines = file($filename);
//ここで余分な行削除
file_put_contents($filename, implode('', $lines));
// もしくは$fp = fopen($filename, 'w'); fwrite($fp, implode('', $lines)); fclose($fp);
0615610
2006/12/14(木) 21:52:13ID:IgfNuu2kphp4と互換性もたせるために>>613さんの後者の記述を拝借させていただきましたが、
implodeがないとファイルへの書込みがおかしくなってしまいます。
fwriteは複数行のデータ(多次元配列ですかね?)は書き込めないんですね。
0620nobodyさん
2006/12/14(木) 23:01:36ID:???0621nobodyさん
2006/12/14(木) 23:06:40ID:???0622nobodyさん
2006/12/14(木) 23:12:27ID:???見つかったら停学だがそのスリルがいい。
0623nobodyさん
2006/12/14(木) 23:16:39ID:???062427
2006/12/14(木) 23:33:48ID:???0625nobodyさん
2006/12/14(木) 23:40:37ID:???まずコンソールからmysqlのコマンド叩いて更新されるか確認したらいいよ。
つーか、エスケープはちゃんとできてるわけ?
0626nobodyさん
2006/12/15(金) 00:13:14ID:0FUvK34I0627nobodyさん
2006/12/15(金) 00:29:42ID:???このスレでまともな回答が得られるかどうか
世の中は間違いだらけだ
http://ya.maya.st/web/RTFM.html
0628nobodyさん
2006/12/15(金) 00:45:12ID:???mysql_query( 〜 ) or die(mysql_error();
でエラーでないか確認してみれ。
あと俺は確実に
mysql_query("update table_$t set col_$r = '".$q."' where col_1 = '".$max2."'");
な感じに書いてるよ、めんどいけどね
0630nobodyさん
2006/12/15(金) 01:16:05ID:???ほとんどPHPでDB扱う際の標準みたいな立場になりつつあるわけだし。
0631nobodyさん
2006/12/15(金) 03:49:30ID:yi07hMf90632nobodyさん
2006/12/15(金) 08:50:30ID:???0633nobodyさん
2006/12/15(金) 09:20:41ID:???PEAR::DBの方は知ってるかな?あれはご存知のとおりPHPで書かれている
ため、普通にPHP上のAPIを使って接続してるだけ。PDOはCで書かれている
のでよりネイティブに近い接続をするから速度も速い。
また、PHP5なら例外処理もやりやすいというメリットもある。
ただ、モジュールインストールになるから対応していないサーバーも多い。
0634nobodyさん
2006/12/15(金) 09:56:54ID:VrTEtYOeいきません。
$array[0][0] =PC $array[0][1] =IP $array[0][2] =null
$array[1][0] =ADSL $array[1][1] =TCP $array[1][2] =UDP $array[1][3] =null
この配列からnullの部分を除いて
$array[0][0] =PC $array[0][1] =IP
$array[1][0] =ADSL $array[1][1] =TCP $array[1][2] =UDP
このようにしたいのですが、どう記述すればよろしいでしょうか?
0635nobodyさん
2006/12/15(金) 10:30:37ID:???0636389
2006/12/15(金) 10:39:28ID:???phpで動的(ブラウザでアクセスがあるたびに生成する)にXML形式のテキストを出力しているのですが、
これをRSSリーダで読み込もうとしても
「登録可能なフィードが見つかりません」と うまくいきません。
出力しているテキストの形式は完全にXML形式になっているのですが、
(ブラウザでソースを見ても完全に期待するXMLファイルと同じ、しかしxmlファイルを表示するときのようにはならない)
phpでRSSフィードをXML形式で出力しようとするためには何か必要なことがあるのでしょうか?
0637634
2006/12/15(金) 10:43:38ID:VrTEtYOeそうですね。
//nullの部分を除外して多重配列を再構成//
$other_array //多重配列
$arr_word =array();
foreach($other_array as $val=> $arrValue)
{
foreach($arrValue as $val2=> $strValue)
{
if($strValue == '')
{
break;
}
else
{
array_push($arr_word,$strValue);
}
}
}
このようにしてみたのですが、nullは除外されても多重配列にはなって
おらず、ひとつの配列に要素が全て連結された状態になってしまいます。
どうか正しい記述をお教えいただきたいのですが。
0639389
2006/12/15(金) 11:17:47ID:???<?
print "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print "<rss version=\"2.0\">\n";
print "<channel>\n";
?>
<title>title</title>
<link>http://www.site/</link>
<description>description</description>
<language>ja</language>
<copyright>Copyright</copyright>
<pubDate>Fri, 15 Dec 2006 06:00:00 +0900</pubDate>
<item>
<title>item title</title>
<link>http://www.site/001.html</link>
<description>item description</description>
</item>
<?
print "</channel>\n";
print "</rss>\n";
?>
0640nobodyさん
2006/12/15(金) 11:27:31ID:???結果を以下のように配列に値が入るように生成したいのですが
どうすればよいでしょうか。
<input type="checkbox" value="1" name="hoge[]"><label>a</label>
<input type="checkbox" value="2" name="hoge[]"><label>b</label>
<input type="checkbox" value="3" name="hoge[]"><label>c</label>
<input type="checkbox" value="4" name="hoge[]"><label>d</label>
0642641
2006/12/15(金) 11:29:19ID:???具体的なソースは以下。
header( 'Content-type: text/xml' );
0643nobodyさん
2006/12/15(金) 11:42:27ID:???そのソースだけならphp使う意味ないような。
こちらの関数も調べてみるといい。
SimpleXML関数 DOM XML関数 xmlwriter関数
0645nobodyさん
2006/12/15(金) 14:10:30ID:???PHPで掲示板を作ってます
HTMLタグを無効化するにはどうしたらいいでしょうか?
htmlspecialcharsを使うと、? ←この文字が?になってしまいます。
よろしくお願いします。
0646645
2006/12/15(金) 14:13:26ID:???上の?は
&#12316;←半角です。
よろしくお願いします。
0647nobodyさん
2006/12/15(金) 14:14:46ID:???<と>だけを置換するようにしたらいいんでないかね。
0649nobodyさん
2006/12/15(金) 14:34:08ID:???>>674の方法以外にも、htmlspecialcharsをしてから、
特定のものだけ(この場合だと?)を置き換え。
0650645
2006/12/15(金) 14:43:00ID:???ありがとうございます
<と>だけを置換するだけでいいんですかね?
htmlspecialcharsの意味がよくわからない^^;
どういうときに使うんだろう・・・
0651nobodyさん
2006/12/15(金) 14:46:36ID:???そもそも&#〜ってのがすでにHTMLエスケープ処理済みの表記だということは理解してる?
エスケープ済み表記をエスケープしたらそりゃおかしくなるという話。
0652645
2006/12/15(金) 14:47:46ID:???特定のものだけ置換しないで、
全部の文字を普通に表示させたいです。
(2chみたいに特殊文字が?になるのは嫌なので)
となるとやはり<と>だけを置換ですよね
<と>だけを置換だと、危険なこととかないのかな?
0653nobodyさん
2006/12/15(金) 14:50:43ID:???0654nobodyさん
2006/12/15(金) 14:54:42ID:zjrdLe6Pバイナリをbin2hexで16進数に変換したあと、それをまたバイナリに戻す事は可能でしょうか?
色々みたけど見当たらない・・・packっていうのがそれっぽかったけど、使い方がよく分からない。
識者の方、ご指導よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています