【PHP】下らねぇ質問はID出して書き込みやがれ 127
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2013/03/19(火) 22:13:49.76ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 126
http://kohada.2ch.net/test/read.cgi/php/1359808868/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0809nobodyさん
2013/05/07(火) 11:04:07.17ID:???0810nobodyさん
2013/05/07(火) 19:18:37.58ID:???ああ
<?PHP
echo implode('', array_keys($arr));
?>
〜間にHTMLの記述〜
<?PHP
echo implode('', array_values($arr));
?>
0811nobodyさん
2013/05/08(水) 17:19:35.07ID:QMrGFLn3<?php
echo "1";
echo "2";
echo "3";
?>
sample.php
$file = file('test.php');
としたときに
$file[0]
には
echo "1";
がはいります。
しかし
$file[5]
には
?>
が入っています。
?>は取得出来るけど<?phpはどうやっても取得されないのでしょうか?
実際には2行目にecho "1";が来るのに配列としては[0]なのであわせられればと思っています。
0813nobodyさん
2013/05/08(水) 18:04:15.48ID:???0814nobodyさん
2013/05/08(水) 18:19:51.72ID:QMrGFLn3array(5) {
[0]=>
string(6) "
string(10) "echo "1";
"
[2]=>
string(10) "echo "2";
"
[3]=>
string(10) "echo "3";
"
[4]=>
string(2) "?>"
}
となってました。
ブラウザ側のソースには
[0]=>
string(6) "<?php
"
[1]=>
string(10) "echo "1";
と表示されています。
html上のものでなぜソースが異なるのかちょっと意味がわからないです。
0815nobodyさん
2013/05/08(水) 18:25:42.54ID:???"
[1]=>
がタグ扱いでブラウザで表示されないだけじゃねーか。
0816nobodyさん
2013/05/08(水) 18:26:35.32ID:???表示しなくするだろw
どうしてもブラウザに出したければ、htmlspecialcharsを通すとかでどうかな。
0818nobodyさん
2013/05/08(水) 19:10:17.99ID:???0820t
2013/05/08(水) 21:34:36.96ID:zJfXxHKJ【PHPのバージョン】5.3
【連携ソフトウェア】
【質問内容】
$encodingText=htmlspecialchars($writingText);
$encodingText=str_replace('\r\n','<>',$encodingText);
$encodingText=str_replace('\n','<>',$encodingText);
$encodingText=str_replace('\r','<>',$encodingText);
$encodingText=str_replace(PHP_EOL,'<>',$encodingText);
ここで聞く事なのかどうか。。2chのlogみたいにcsvにフォームからの書込みを一行保存したくて改行を<>に変換したいですけど
これだとcsv内は改行されてしまいます。。何故かPHP_EOLを使った部分で改行が「"改行<>"」という形でcsvに保存されます。
どうすりゃ改行を一行にまとめられますかね???ちなみに最初のhtmlspecialcharsは関係なかーたです
0821nobodyさん
2013/05/08(水) 21:40:22.63ID:???0822nobodyさん
2013/05/08(水) 21:52:05.37ID:???改行コード(\n)がシングルになってる。
展開させるためにはダブルにしろ。"\n"
htmlspecialcharsは出力の直前にかけろ。
ただし2chがそういう仕様ならそれを真似るなら仕方ない。
str_replaceでまとめられるものはまとめろ。
つまりstr_replace(["\r\n", "n"], '<>',$encodingText);
"\r"で改行なんて今更ない。昔あったのかも知らん。
遺贈。
0823nobodyさん
2013/05/08(水) 22:19:17.07ID:???反転させるような関数はありますでしょうか?
なければ100-(100*2)みたいな感じしかないでしょうか。
0824t
2013/05/08(水) 22:26:44.16ID:zJfXxHKJありがとうございます。str_replaceのシングルをダブルクオートに変えたら行けました。
どーもですどーもです。
ちなみにその[]で囲むやり方知らなくてこっちで動かなくて気になるんですができれば。。。。。
0825t
2013/05/08(水) 22:28:51.25ID:zJfXxHKJ-1をかけたらええですよ
0827t
2013/05/08(水) 23:17:42.41ID:zJfXxHKJおーどーもです。うーむ無理か。。
0828nobodyさん
2013/05/08(水) 23:57:01.25ID:???こうすればいけるよ。
>>826のは
5.4から array() の代わりに [] が使えるようになったよって意味の => かと。
0829nobodyさん
2013/05/09(木) 00:11:27.65ID:???0830nobodyさん
2013/05/09(木) 09:06:33.16ID:Jsywf66a【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】
datetimeの比較がうまくいきません。
$start = new DateTime("2013/05/08 12:30:30");
$end = new DateTime("2013/05/04 12:30:30");
if( $start > $end )
{
echo "true";
}
else
{
echo "false";
}
としてもfalseのみが出ます。
仮に$startと$endを入れ替えてもfalseとなります。
http://php.net/manual/ja/datetime.diff.php を見るとオブジェクトの比較が出来ているようなのですが何か違っていますでしょうか?
0831nobodyさん
2013/05/09(木) 09:11:48.64ID:???http://ideone.com/7kfq6S
0834nobodyさん
2013/05/09(木) 10:26:25.73ID:???new を使っているからオブジェクトで定義しているんじゃないの?
中の値で比較するんだったら
if($start->gettimestamp() > $end->gettimestamp())
とかで比較しないとダメなんじゃない?
0836nobodyさん
2013/05/10(金) 22:59:44.03ID:nZ5eiGcK0837nobodyさん
2013/05/10(金) 23:03:50.33ID:???0838nobodyさん
2013/05/10(金) 23:21:28.67ID:iT9k79IA0839nobodyさん
2013/05/10(金) 23:26:36.03ID:???0840nobodyさん
2013/05/10(金) 23:50:29.42ID:ReW38688要素についてtrue(1)かfalse(0)かを確かめたいのですが
var_dumpで
object(SimpleXMLElement)#1 (1) {
["result"]=>
object(SimpleXMLElement)#4 (4) {
["options"]=>
object(SimpleXMLElement)#2 (0) {
}
["raw"]=>
object(SimpleXMLElement)#3 (0) {
}
["status"]=>
string(1) "0"
["statusmsg"]=>
string(5) "Sorry"
}
}
のようになっているのものを
if($object->result->status)
とすると0の場合も1の場合もtrueになってしまいます。
string型の0はfalseと判断されないのでしょうか?
0842nobodyさん
2013/05/11(土) 09:14:21.17ID:3jYy1XhqQRコード読み取りから空メールさせる方法とは別に、
サイトからユーザに空メールを送るようにもさせたいと思っております
mailtoを貼り付けようと思ったのですが、この場合spamが心配です
たとえば、phpで動的に書き出したページにmailtoを仕込んでおけば
spam対策になるもんでしょうか
それともなにか他に手だてがありますでしょうか
0844nobodyさん
2013/05/11(土) 12:18:36.78ID:OhMoHBiSフィールド名いじっておいて
普通に使うフィールド名は罠フィールドとしてcssで非表示
罠フィールドに何か入ってたらbotとして拒否
ということやってる
0845nobodyさん
2013/05/11(土) 22:28:31.55ID:JC/Ksawh質問1
message_typeで1を指定したらメールを送れるってことですが、
この場合このPHPが入ってるのと同じサーバのsmtpdを利用するってことですよね?
他サーバのsmtpdを使うことは出来ないんでしょうか
アプリケーションサーバとメールサーバを分けたい場合はどうすれば良いんでしょうか
質問2
エラーを出力保存するファイルを指定できるようになっていますが、
蓄積されたエラーが膨大になった時に、過去ログ化して新しい同名のファイルを
作成することになるんだと思います。
このとき、何を基準に新規ファイル作成するんでしょうか
そういうのを指定できるオプションってないですか?
よろしくお願いします
0846nobodyさん
2013/05/11(土) 22:36:28.21ID:???1
http://www.php.net/manual/ja/mail.configuration.php
2
logrotate
0848nobodyさん
2013/05/12(日) 12:39:50.54ID:kHm/fQGTググるとたくさん該当する話が出てくるんですが
$msg = "エラーです";
error_log($msg.'\n', 3, '/tmp/error.log');
error_log($msg.'\r', 3, '/tmp/error.log');
error_log($msg.'\r\n', 3, '/tmp/error.log');
error_log($msg.'\n', 3, '/tmp/error.log');
error_log($msg.'\r', 3, '/tmp/error.log');
error_log($msg.'\r\n', 3, '/tmp/error.log');
とどうやっても改行されません
エラーです\n
エラーです\n
と、そのまま出てしまいます
どうしたらいんでしょうか
0849848
2013/05/12(日) 12:46:50.30ID:???0850nobodyさん
2013/05/12(日) 12:52:41.37ID:???0853nobodyさん
2013/05/12(日) 22:07:17.68ID:4FW3vhI4178:名無しさん@13周年[]
2013/05/12(日) 20:54:52.39 ID:VA7SdRMg0
ふーーーんwwww
民主党調子こいてんなあwwww
ようおまいらwww元気ぃ?wwwよろしくやってたかい?www
--- 以下スレ情報 ---
【政治】「自民が反対したから」「官僚が抵抗したから」 民主党の『大反省会』、反省どころか、言い訳や責任転嫁がほとんど★3
http://uni.2ch.net/test/read.cgi/newsplus/1368355843/
0854nobodyさん
2013/05/13(月) 13:12:37.61ID:Y6gDftln【PHPのバージョン】5.3
【連携ソフトウェア】
【質問内容】HTMLの入力フォームにURLを入力して、
予め保存してある複数のURLと重複していないか、
リンク切れではないかという判定をしたいのですが
うまくいきません。
まず重複の判定は、入力フォームからの文字列を$str、
予め保存してるURLを"urlist.txt"に保存してます。
if(!$fp=fopen("urllist.txt","r")){
return ERROR(1);
}else{
$urllist = file("urlist.txt");
foreach( $urllist as $url ){ //URLの重複チェック
if (mb_ereg( "$str","$url" )){
return ERROR(2);
break;
}
}
fclose($fp);
}
こんな感じで、普通のURLだと重複チェックできるのですが、
yutubeやニコニコ動画などのURLだとなぜか判別できません。
0855854
2013/05/13(月) 13:14:40.79ID:Y6gDftlnget_http_headerというのをつかってみたのですが
うまくできませんでした。
何か良い方法があれば教えてください。
よろしくお願いします。
0856nobodyさん
2013/05/13(月) 13:29:28.92ID:???.は任意の一文字で合ってしまうとしても、 ? があると通らないよね。
0857nobodyさん
2013/05/13(月) 13:40:37.60ID:???0858nobodyさん
2013/05/13(月) 15:15:30.49ID:k+GDNsHpfunction &hoge()
{
return new StdClass;
}
とすると、
Notice: Only variable references should be returned by reference
とエラーログが出ますよね。
で、いったんnewを変数に入れてからreturnすると問題はなくなります。
しかしこれって、いったん変数に入れることで
PHPの処理内容としてどのような違いがあるわけなのでしょうか?
恐れ入りますが、ものすごくわかりやすく教えて下さい。
0859854
2013/05/13(月) 15:56:53.43ID:Y6gDftlnレスありがとうございます。
見てみたら、yutubeやニコ動のURLには?、&など入ってました。
これを正規表現に展開しないようにすれば、判別できるようになるのでしょうか?
展開しないようにそのまま判別するには、?、&があった場合に\を付ける的な
処理をすればできますかね?
0860nobodyさん
2013/05/13(月) 16:19:53.06ID:???完全一致でいいならstrcmpやstrcasecmp使ってはどうか。
0861nobodyさん
2013/05/13(月) 16:52:44.90ID:???質問の答えじゃ無いんだけど、なんで
function hoge()
とやらずに
function &hoge()
ってやりたいの?
0862nobodyさん
2013/05/13(月) 17:06:55.59ID:k+GDNsHpPHPの挙動と仕様への理解を深めたいだけで、やりたいわけじゃないです。
オブジェクトはデフォルトで参照で渡されるそうですが、
この場合、&を付けることでどのような違いが発生していますか?
0863nobodyさん
2013/05/13(月) 18:14:48.62ID:???んー、明確な答えを持ってるわけじゃ無いんだけど、まず、new Klassしたものはリファレンスではない。
http://php.net/manual/ja/language.oop5.references.php ・・・(1)
$a = new Klass;
この場合の$aはリファレンスでは無くオブジェクトのID。
一方、リファレンスを戻すメソッドは、&method()と定義し、リファレンスを戻さなければならない。
http://www.php.net/manual/ja/language.references.return.php
つまり、&method()では、new Klassしたものを直接戻すことはできない(型が違うので)。
&method()でreturn $variable;と書くと、$variableのリファレンスが戻される(&$variableが戻る)。
これは、(1)の$c = &$d; の場合と同じ。
0864863
2013/05/13(月) 18:16:35.34ID:???行われないのだろうかという疑問が残るが、それは良くわからない。
良くわからないので、俺は&method()は一生使わないと思う。
0865nobodyさん
2013/05/13(月) 18:22:46.46ID:???0866nobodyさん
2013/05/14(火) 00:45:31.37ID:gD2UsIagオブジェクトのIDとは知らなかったのでひじょーに勉強になりました。
> 式 の結果を返してくれることはありません。
> 可能なことは、値へのリファレンスを返すことができるということだけで、
> それ以外の何者でもありません。
という仕様だということで、&のretun newが無効なのも納得できました。
0867nobodyさん
2013/05/14(火) 01:13:37.48ID:gD2UsIagfunction hoge()
{
return 1;
}
$r = &hoge();
とした時、$rの参照先はどこを指していますか?
どこからもアクセスや改変がされない何処かなのでしょうか?
0868nobodyさん
2013/05/14(火) 09:26:33.29ID:???0869867
2013/05/15(水) 07:58:41.28ID:/TAZ4XOpマニュアルで、リファレンスはハードリンクのようなものだと学びました。
http://www.php.net/manual/ja/language.references.whatare.php
とすると、>>867では「$r = &hoge();」としても、「$r = hoge();」としても、
この場合、値に対してシンボルテーブルが割り当てられているのは「$r」に限られるため、
「$r」が保持するものも処理内容自体も、全く同じであると考えていいわけですね?
0870nobodyさん
2013/05/15(水) 22:55:26.37ID:efuZNxA4くだらない質問ですが助けてください。
【OS名】Windows7+XAMPP1.8.1
【PHPのバージョン】5.4.7
【連携ソフトウェア】PEAR 1.9.4
【質問内容】
DBからテーブルのデータを連想配列に取り込もうとしています。
Web上にあった「while($row=$hoge->fetchRow(DB_FETCHMODE_ASSOC))」を利用して実行すると、
「Notice: Use of undefined constant DB_FETCHMODE_ASSOC - assumed 'DB_FETCHMODE_ASSOC' in hogehoge.php on line 34」とエラーが出てしまいます。
エラーの通り「while($row=$hoge->fetchRow('DB_FETCHMODE_ASSOC'))」とするとエラーは消えますが、取得した配列のキーはnullになります。
どうしたら回避できるでしょうか。
なにとぞお助けください。
0871nobodyさん
2013/05/16(木) 01:43:12.19ID:???0872nobodyさん
2013/05/16(木) 02:27:01.44ID:???サーバーたててlampは辞めて欲しいけどローカル用環境ならxamppで十分でしょ
0873870
2013/05/16(木) 08:03:03.05ID:yTIwfF81ありがとうございます。
XAMPPで構成されたAPACHEやPHPは単独で入れた場合と動作が違うということでしょうか。
XAMPP消してそれぞれ単独インストールしてみたほうがいいですか?
0875nobodyさん
2013/05/16(木) 12:38:58.01ID:IW38rAuXfileで読み出し
whileで全行検索
一致部分を変更
file_put_contentで元に戻すという形で書き換えています。
linuxのsedみたいに指定箇所をざっくり書き換える方法はありますか?
0876nobodyさん
2013/05/16(木) 12:52:43.89ID:???あと、sedがいいならsed起動しろ。
0877nobodyさん
2013/05/16(木) 13:26:22.85ID:IW38rAuXすべてをいったん読み込むことなく
該当する場所のみを書き換えるのにざっくりという言葉を使ってしまいました。
申し訳ありません。
現在開発をしているところはコマンドを叩ける権限がないので
一旦すべてを読み込む以外でsedのように書き換える方法があればと思っておりました。
0880nobodyさん
2013/05/16(木) 16:59:41.66ID:???ファイルの先頭に一文字追加したときに起こっていることについても勘違いしてそう。
0881nobodyさん
2013/05/16(木) 17:21:26.79ID:???0882nobodyさん
2013/05/16(木) 17:31:23.47ID:???0883nobodyさん
2013/05/16(木) 19:08:30.78ID:???0885870
2013/05/16(木) 20:28:48.82ID:pZ2YUXztご指摘ありがとうございます。
requireはMDB2.phpだけ指定しています。
MDB2_driverも呼んでみましたが変わらなかったです。
0887nobodyさん
2013/05/16(木) 22:58:34.11ID:???MDB2なら MDB2_FETCHMODE_ASSOC
0888870
2013/05/17(金) 18:10:51.64ID:GrS1oXzW解決しました!!
マニュアルはちゃんと全部読めってことですね、猛省します・・・。
みなさまありがとうございました!!
0889nobodyさん
2013/05/17(金) 19:57:20.25ID:???0890nobodyさん
2013/05/17(金) 20:42:22.69ID:hjTCl7an↓このプログラムの値を受け取るにはどのようにしたらいいのでしょうか?
<form action="sample10-2.php" method="get">
<?php
$items=array('a-1'=>'ガム', 'b-2'=>'チョコレート', 'c-3'=>'クッキー');
foreach($items as $itemKey => $itemValue){
print('<input type="checkbox" id="'.$itemKey.'" value="'.$itemKey.'" />
<label for="'.$itemKey.'">'.$itemValue.'</label>');
}
?>
<input type="submit" value="送信する" />
</form>
0892nobodyさん
2013/05/17(金) 21:54:07.09ID:hjTCl7anarray(0) { } ってでてきました。
0893nobodyさん
2013/05/17(金) 22:03:08.07ID:???0894890
2013/05/17(金) 22:06:06.39ID:hjTCl7an0895nobodyさん
2013/05/17(金) 22:27:59.48ID:jIpNXAl4/public_htmlファルダに置いたa003.phpに対して
同じく/public_htmlファルダに置いたtest.shに
#!/usr/bin/php
cd ~/public_html
/usr/bin/php a003.php
と書いて、cronマネージャに
sh ~/public_html/test.sh
と書いて実行しましたが、a003.phpは動きません
sh ~/public_html/test.shは間違いない記述で
a003.phpは動作正常に動作しています。
test.shのphpの実行の間違えだと思うのですが、
教えてください。
0896nobodyさん
2013/05/17(金) 22:37:03.62ID:???0898nobodyさん
2013/05/17(金) 22:47:24.26ID:jIpNXAl4test.shが777にしています。
レンタルサーバーの会社に問い合わせると、
phpは動く。
cronのコマンドなどのサポートは一切できない
という返信が来ました
もう、さっぱりわかりません
0899890
2013/05/17(金) 22:48:23.15ID:hjTCl7anURLは
http://localhost/sample10-2.phpになりました
0902nobodyさん
2013/05/17(金) 23:03:59.98ID:???test.shが777にしています。
レンタルサーバーの会社に問い合わせると、
phpは動く。
cronのコマンドなどのサポートは一切できない
という返信が来ました
もう、さっぱりわかりません
0903nobodyさん
2013/05/17(金) 23:05:37.84ID:???0904nobodyさん
2013/05/17(金) 23:06:17.51ID:jIpNXAl4cd ~/public_html
/usr/bin/php a003.php
こうですか
0905nobodyさん
2013/05/17(金) 23:06:57.67ID:???0906nobodyさん
2013/05/17(金) 23:26:49.02ID:???あとは php のパスかなぁ。確認した?たまに
/usr/local/bin/php
のところもあるよ
0907nobodyさん
2013/05/17(金) 23:52:42.50ID:jIpNXAl4モジュール版 パス: /usr/bin/php
となってました
fc2 レンタルサーバーLITE
0908nobodyさん
2013/05/18(土) 00:22:14.10ID:???これおかしくないか?
間違えてないって何で言えるの?
シェルを実行しているルートからのパスにしないとダメだろ
レス数が900を超えています。1000を超えると表示できなくなるよ。