【PHP】下らねぇ質問はID出して書き込みやがれ 136
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2014/08/06(水) 23:31:16.38ID:GyAfw2+q過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 135
http://kanae.2ch.net/test/read.cgi/php/1405860979/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0896nobodyさん
2014/09/14(日) 21:26:37.73ID:5DX/CGIdありがとうございます
こちらのスレに答えが書いてありました
$text = 'abcabcabc';
$text = preg_replace('/(?<=a)bc(?=a)/', '', $text);
0897nobodyさん
2014/09/14(日) 22:10:25.26ID:???0898nobodyさん
2014/09/14(日) 22:57:25.46ID:???0899nobodyさん
2014/09/16(火) 15:01:00.57ID:???いまでも問題なく使っていけるライブラリなのでしょうか?
0900nobodyさん
2014/09/16(火) 15:01:33.06ID:PDR72HzF0901nobodyさん
2014/09/16(火) 17:20:56.28ID:/DjoSEZDfile_put_contensやexecでの書きこみ等いろいろ試してみましたが出来ません。
もしかしてローカルからの実行じゃないとできないとかそういう制約とかってありますか?
0902nobodyさん
2014/09/16(火) 17:29:04.31ID:???0903nobodyさん
2014/09/16(火) 17:29:49.27ID:fb/e2Lk40904nobodyさん
2014/09/16(火) 17:30:46.25ID:???リモートであろうがなかろうが、コマンドやOSの機能を実行するのは、あくまでWebサーバ(あるいはfpm)のOS上のユーザ。
よって、そのユーザが対象のファイルなりディレクトリなどに対して権限がなければ実行できない。
0905nobodyさん
2014/09/16(火) 17:40:24.81ID:???0907nobodyさん
2014/09/16(火) 18:41:21.77ID:???0908nobodyさん
2014/09/16(火) 19:04:06.22ID:???0909nobodyさん
2014/09/17(水) 00:45:00.95ID:???最近まで更新されてるものは使えるんじゃね?
色々警告出るのは諦めるしか無い。気になるなら自作しよう。
0910nobodyさん
2014/09/17(水) 10:19:16.22ID:???まず思い当たる解決方法を試すんじゃなくて、原因を探すことを考えたほうがええ。
エラーログ読むか、エラーメッセージ読むか、
それが表示されてなければ、display_errorsとerror_reportingでぐぐるべし。
0911nobodyさん
2014/09/17(水) 11:53:23.26ID:???よくある話やわ
0912nobodyさん
2014/09/17(水) 12:04:55.25ID:iY5IX8KP複数のファイルを読み込みたいんですが、ファイルの最初に
<?php
include("file1.php");
include("file2.php");
こんな感じで読み込むことは不可能ですか?
また、このfile1、file2のように複数のファイルを読み込む場合はどのような方法がありますか?
他の方法で出来ないわけではないですが、出来れば上記のような方法で最初に纏めて読み込みたいです。
よろしくお願いします。
0913nobodyさん
2014/09/17(水) 12:06:16.83ID:8LsJNBjRそう思う理由は何だ?
0914nobodyさん
2014/09/17(水) 12:06:33.20ID:???0915nobodyさん
2014/09/17(水) 12:13:16.74ID:iY5IX8KP普通に出来ると思ってたんですが、なぜかエラーになってしまいます。
どちらか1つにすると問題なく動くので、もしかしたら不可能なのかと思いました。
再度試してみましたがなぜか出来ません。
0916nobodyさん
2014/09/17(水) 12:18:19.17ID:???・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
0918nobodyさん
2014/09/17(水) 12:38:54.33ID:???0919nobodyさん
2014/09/17(水) 12:46:41.72ID:???0920nobodyさん
2014/09/17(水) 15:04:05.67ID:???0921nobodyさん
2014/09/17(水) 20:22:15.93ID:Jpx5qfxyPHPのforeach構文について質問
?php
$numbers = array(1, 2, 3);
foreach($numbers as $item) {
echo $item;
}
上のコード内の
forreach ($numbers as $item)
っていう部分で
「$numbersという配列を$itemと見なせ」みたいな命令をしてると思うんだけどこれってなんで
必要なの?
要するに
?php
$numbers = array(1, 2, 3);
foreach($numbers ) {
echo $numbers;
}
じゃなんで駄目なの??
0922nobodyさん
2014/09/17(水) 20:23:35.00ID:Jpx5qfxyそのまま$numbersの中のそれぞれの要素に対してechoしろ
でいいんじゃないのかなーと
0923nobodyさん
2014/09/17(水) 20:34:11.72ID:???英語の意味的にどうだとかいっても、命名した本人じゃないとわからない。
0924nobodyさん
2014/09/17(水) 20:38:44.64ID:Jpx5qfxyそういうものかあ
あざっす
0925nobodyさん
2014/09/17(水) 20:55:03.97ID:???> でいいんじゃないのかなーと
$numbers = array(1, 2, 3);
foreach($numbers ) {
echo $numbers;
echo $numbers;
}
こうした時どうなってほしいのかとか、あれこれ考えてみたら?
0926nobodyさん
2014/09/17(水) 21:08:31.08ID:???$numbersという配列(リスト)を先頭から順番に見ていって、
現在の位置(インデックス)にある値を$itemに入れるという意味。
>>921のコードだと$numbersの配列数だけ配列をechoするってコードで意味がおかしい。
PHPだけじゃなくてどの言語のForeach文も同じようなもん。
たいていinとかコロンで表してasなのは少数派だけど。
0927nobodyさん
2014/09/17(水) 21:14:25.21ID:???$numbersという配列を参照や変更したい場合どうすんのさ
0928nobodyさん
2014/09/17(水) 21:39:22.80ID:???itemが配列中の1つの要素だということは、わかってる?
foreach内で配列全体を見たくなったらどうするの?
連想配列の時どうするの?
0929nobodyさん
2014/09/17(水) 22:18:22.78ID:???foreach ($array as $val) は、 別にみなしている訳じゃない。
その意味で、foreachのasは、厳密に言えば英単語のasの意味とは少し違うかもしれん。
0930nobodyさん
2014/09/17(水) 23:19:19.18ID:???>「$numbersという配列を$itemと見なせ」みたいな命令をしてると思うんだけど
誤って解釈した結果に対しておかしいおかしいって言ってるだけじゃん
そりゃおかしいよ
0931nobodyさん
2014/09/18(木) 02:27:41.57ID:???0933nobodyさん
2014/09/18(木) 06:06:52.80ID:???0934nobodyさん
2014/09/18(木) 06:19:14.72ID:???とか何語だよと思った
日本語化は企画倒れだったな
0936nobodyさん
2014/09/18(木) 22:29:13.02ID:KawB1H3Lhttp://know-how-tree.com/archives/tag/partition
0937nobodyさん
2014/09/18(木) 23:26:06.43ID:b2+T+l6A他スレでスレ違いと言われました(マルチではないです)
下記のコードで不明点があります。
$email_sub = 'アンケートを受け取りました。';
$email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8");
$email_head = 'From:[email protected]';
mb_language('Japanese');
mb_internal_encoding("UTF-8");
mb_send_mail($email, $email_sub,$email_body, $email_head);
"$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8");"
の意味が調べてもわかりません、どういう意味でしょうか?
ダブルクォーテーションとシングルクォーテーションに対して何をしているのでしょうか?
また、何故"UTF-8"と指定しているのでしょうか?
あるいわ$nicknameに入る不正な文字列として扱われるシングルダブルクォートとダブルクォートを
無害化(サニタイジング)してる認識ですかね・・・。
0938nobodyさん
2014/09/19(金) 00:40:03.12ID:???調べても分からないとは?
http://php.net/manual/ja/function.html-entity-decode.php
このページにこの関数の情報は全て書かれていると思うが。
0939937
2014/09/19(金) 01:55:35.08ID:R/LZD/Ioそこのマニュアルを見ても、いまいちなんです・・・
上記コードの簡単に解説をお願いします。
エスケープ処理しているのですかね
0940937
2014/09/19(金) 02:02:27.72ID:R/LZD/Io$email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
のダブルクォーテーション(変数nickname以降からセミコロン前のダブルクォーテーション)を
"""として表示させず普通にダブルクォーテーションとしてるのでしょうか?
よくわかりません。
0941937
2014/09/19(金) 02:05:12.39ID:R/LZD/Ioサニタイジング、エスケープ処理なのでしょうか?
自分なりに考えた結果です、必要なら全コードも記述します。
0942nobodyさん
2014/09/19(金) 02:37:07.89ID:???>HTML エンティティを適切な文字に変換する
"や<なんかを "や<などに変換するってこと
UTF8の指定はPHP 5.5以前を使っているのなら指定しといたほうがいいみたい
html_entity_decodeはむしろエスケープ処理の逆だと思う
メール文をエスケープしても仕方ないしね
0943nobodyさん
2014/09/19(金) 02:52:29.08ID:???前段階がわからないから書かれているところだけ見ると
最期がmb_send_mail()なんだし、
html形式を作っている箇所は見当たらないから
テキストでメールを送るわけでしょ
テキストメールに実体参照が混じったら読みづらいから普通の文字列にする
UTF-8の指定は無難だからで、深く考えるほどのこともない
嫌だったらサポートされている他のコードに合わせて書き換えればいい
0944937
2014/09/19(金) 03:06:31.06ID:R/LZD/Io夜分遅くにレスをありがとうございます。
要はメールで送った際に&quot;や&lt;が本文に表示されたら
読みにくいから普通に"(ダブルクォーテーション)などで表示させるための
コード記述と考えて良いでしょうか?
0945937
2014/09/19(金) 03:09:17.63ID:R/LZD/Io<?php
$nickname = $_POST['nickname'];
$email = $_POST['email'];
$goiken = $_POST['goiken'];
$nickname = htmlspecialchars($nickname);
$email = htmlspecialchars($email);
$goiken = htmlspecialchars($goiken);
print'<p>';
print $nickname;
print'様<br />';
print'ご意見ありがとうございました。</p>';
print'<p>頂いたご意見「';
print $goiken;
print'」</p>';
print'<p>';
print $email;
print'にメールを送りましたのでご確認ください。</p>';
$email_sub = 'アンケートを受け取りました。';
$email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8");
$email_head = 'From:[email protected]';
mb_language('Japanese');
mb_internal_encoding("UTF-8");
mb_send_mail($email, $email_sub,$email_body, $email_head);
?>
0946937
2014/09/19(金) 03:11:39.61ID:R/LZD/Io"や<などを入力する人はいないと思いましたが・・・
0947nobodyさん
2014/09/19(金) 03:23:10.85ID:???0949nobodyさん
2014/09/19(金) 08:18:05.30ID:???エスケープ前の文字列を残しておけばいいのに変数を上書きしてるから、わざわざデコードしてるんでしょそれ
0950nobodyさん
2014/09/19(金) 08:46:46.41ID:???やりたかったであろうことは単に元に戻したいというだけかと。
0951937-945
2014/09/19(金) 20:50:40.14ID:R/LZD/Ioすごい悩んでいた疑問が解決できて先に進めそうです、心から感謝です!
一応整理なんですが以下の解釈・認識で合っていますでしょうか?
ご返答頂ければ幸いです。
先ずは、>>945のソースで(省略部分あり)
1. $nickname = $_POST['nickname'];で値を受け取る。
2. $nickname = htmlspecialchars($nickname); 無害化処理
勿論、$nicknameに特殊文字が混入の場合。
(例 "(ダブルクォーテーション)や<(カッコ)などを&quot;や&lt;に
変換する。
3. $email_body = $nickname."様へ\nアンケートのご協力、ありがとうございました。";
の変数$nicknameに無害化された特殊文字(&quot;や&lt;)が入る。
4. メールで送るのでテキストの体裁が悪くなる為に
$email_body = html_entity_decode($email_body, ENT_QUOTES, "UTF-8"); で
無害化されている特殊文字(&quot;や&lt;)を、"や<に戻している。
これで合っていますでしょうか?
0952nobodyさん
2014/09/19(金) 21:17:45.46ID:???0954nobodyさん
2014/09/19(金) 22:02:16.72ID:???合っていると思うよ。
ただ、そのコードなら、出力時にhtmlspecialcharsに通すべき。
print htmlspecialchars($nickname, ENT_QUOTES, "UTF-8");
こうすれば、あとで、html_entity_decodeを使わなくて済む。
まあ、そもそも、無害化したままの文字列でメール送信しても良さそうだけどね。
0955937-945
2014/09/19(金) 22:10:38.25ID:R/LZD/Ioどうしても、"何故"そうなのかが作者の意図が気になり中々進めないです。
>>953
某参考書です、解説に自分が質問したないようについては一切触れていなく
大変、困惑していました。当該ソースに"何故どういう意味"があるか疑問でした。
>>954
ありがとうございます。
気持ちが晴れました。
0958nobodyさん
2014/09/20(土) 11:32:53.37ID:???echo $dt->getTimezone()->getName();
結果
+00:00
なんで勝手にタイムゾーンUTCに変えとんねんアホか死ね
0961nobodyさん
2014/09/20(土) 12:21:39.93ID:???ドキュメント読まないバカ晒しあげ
$time パラメータが UNIX タイムスタンプ (@946684800 など) であったりタイムゾーンつきで指定した場合 (2010-01-28T15:00:00+02:00 など) は、 $timezone パラメータや現在のタイムゾーンは無視されます。
0962nobodyさん
2014/09/20(土) 12:46:47.64ID:P3AA6qJA$hoge = 5;
$hoge2 = 10;
if($hoge < $hoge2);//数値の比較
$hoge = '5';
$hoge2 = 10;
if($hoge < $hoge2);//数値の比較
$hoge = '5';
$hoge2 = '10';
if($hoge < $hoge2);//文字列同士の比較?
0963nobodyさん
2014/09/20(土) 14:17:17.80ID:???http://jp2.php.net/manual/ja/language.operators.comparison.php
0964nobodyさん
2014/09/20(土) 16:28:49.95ID:???国語の点数低い人は往々にして改修作業でおかしなコードを生むんだよ。
既存コードの意図を理解するのが苦手、もしくはできないからね。
0965nobodyさん
2014/09/20(土) 20:22:34.03ID:???比較対象の変数の中身が予定される正常なものか、
事前に型と値をチェックすることが必要。
また、比較に用いる型にキャストしておくのも一つの方策。
次のことにも注意。
「整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、
文字列が 数値に変換され、 数値としての比較を行います。」
0966nobodyさん
2014/09/20(土) 20:41:52.26ID:???さも崇高な学問のように語っててちゃんちゃらおかしいわい
0969nobodyさん
2014/09/20(土) 21:24:31.73ID:Hi6uM9UMwhile ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
print_r($row);
$groupusers[$row["group"]][] = $row["user"];
}
print_r($row)の結果は
Array([group]=>1 [user]=>12)
Array([group]=>1 [user]=>22)
Array([group]=>1 [user]=>25)
Array([group]=>2 [user]=>10)
Array([group]=>2 [user]=>19)
Array([group]=>2 [user]=>32)
Array([group]=>3 [user]=>11)
Array([group]=>3 [user]=>13)
Array([group]=>4 [user]=>38)
となります。
groupの並び順を変更して、下記のような結果が出るようにしたいのですが、どのように変えればよいでしょうか?
Array([group]=>2 [user]=>10)
Array([group]=>2 [user]=>19)
Array([group]=>2 [user]=>32)
Array([group]=>4 [user]=>38)
Array([group]=>3 [user]=>11)
Array([group]=>3 [user]=>13)
Array([group]=>1 [user]=>12)
Array([group]=>1 [user]=>22)
Array([group]=>1 [user]=>25)
0971nobodyさん
2014/09/20(土) 21:31:08.37ID:???0974969
2014/09/20(土) 21:47:42.15ID:Hi6uM9UM下記の文があります。
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$groupusers[$row["group"]][] = $row["user"];
}
print_r($groupusers);
の結果が
Array([1]=>Array([0]=> 12 [1]=> 22 [1]=> 25) [2]=>Array([0]=> 10 [1]=> 19 [2]=> 32) [3]=>Array([0]=> 11 [1]=> 13) [4]=>Array([0]=> 38))
となりますが、
Array([2]=>Array([0]=> 10 [1]=> 19 [2]=> 32) [4]=>Array([0]=> 38) [3]=>Array([0]=> 11 [1]=> 13) [1]=>Array([0]=> 12 [1]=> 22 [1]=> 25))
となるにはどのようにしたらよいでしょうか?
0975969
2014/09/20(土) 21:48:56.72ID:Hi6uM9UMルールはなくて、並び順を指定の順番にしたい感じです。
なので、ソート関係の関数では無理だなと思いまして。。。
0976nobodyさん
2014/09/20(土) 22:22:56.21ID:???で、初期化しておけばいいという、そんな単純な話?
0977nobodyさん
2014/09/20(土) 22:28:00.29ID:???なんか余計に分かりづらくなってる。
なんのために、そうしたいのかな。
groupを2,4,3,1の順番にしたいのなら、groupごとに配列を抜き出して
再度、array_mergeなどで必要な順で結合すればいいと思うけど。
何をしたいのかイマイチわからん。
0978nobodyさん
2014/09/20(土) 22:38:04.42ID:???0980nobodyさん
2014/09/20(土) 23:09:45.34ID:???group2 group4 group3 group1の順番でuserが若い順でソートでいいか?
0981nobodyさん
2014/09/20(土) 23:18:03.11ID:???980ふんだからたてたぜ
0983nobodyさん
2014/09/21(日) 22:11:04.22ID:???$key=array(2,4,3,1);
uksort($groupusers, function ($a,$b) use ($key){
return array_search($a,$key)>array_search($b,$key);
});
print_r($groupusers);
0986nobodyさん
2014/09/22(月) 10:15:52.02ID:???どういう意図の順番なのか言えってこと。
規則性もなく意図もなく、ただの固定順なら固定順って言えばいいんだけど。
0989nobodyさん
2014/09/22(月) 14:09:04.64ID:???SQLは可能な限り単純にして、後はコードでがんばればよいというアレだな。アレ。
0990nobodyさん
2014/09/22(月) 15:26:37.26ID:???恥ずかしいから、3年ほどマニュアルかDB板、ROMってこい。
0992nobodyさん
2014/09/22(月) 18:01:08.15ID:???0993nobodyさん
2014/09/22(月) 18:47:56.92ID:???TOP-LIMITとか、避けて通れない方言もあるけどさ。
0994nobodyさん
2014/09/22(月) 19:28:58.23ID:???レス数が950を超えています。1000を超えると書き込みができなくなります。