トップページphp
1001コメント306KB

【PHP】下らねぇ質問はID出して書き込みやがれ 112

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/10/31(月) 05:11:09.81ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0099nobodyさん2011/11/04(金) 14:28:45.24ID:???
また○○はするなを鵜呑みにしちゃう低学歴のご登場か
○○していいよっていう意見よりも○○はするなという意見を信じてしまう典型的な例
0100nobodyさん2011/11/04(金) 15:23:02.83ID:???
>フォームタグ出力関数

ナニソレ
0101nobodyさん2011/11/04(金) 16:02:57.33ID:???
>>99
「いつも私はこのように書いています。」ってのも、かなりの安心感をもたらす魔法の言葉。

なので、さっぱり良いとも悪いとも、そもそも話を理解できていない俺が

>>98
簡単なアプリならフォームタグ出力関数みたいなのを作るのが楽でいいよ。
フォームベタ書きでもいいけど、あんまりオススメしない。
将来もっと複雑になってきたときにフレームワークに切り替えればおk。

と、レスをするわけです。
0102nobodyさん2011/11/04(金) 17:05:52.19ID:???
DOM使えばじゃあ
それにしてもPHPのDOMは貧弱だよな
0103nobodyさん2011/11/04(金) 17:59:53.68ID:???
>>98
関数とhtmlが分かりにくく混ざることを危惧した言葉だと思う。
関数を使うことで(書きやすさではなく)見通しが良くなるというのであれば作ればいい

ちなみに私はsmartyを組み合わせた自作簡易フレームワークの為にhtmlをはきだすクラスを作った
<div>{{ht->inpur name='hoge' value='hogevalue'}}</div>
このhogeはPOSTの値と繋がっているから、
POST['hoge']に何かが入っていたら、自動的にその内容が表示されるとか、
selectだと自動的に選んだものにselectedが入るとか、
そういう使い方はしてる
0104nobodyさん2011/11/04(金) 18:36:16.55ID:???
>>101-103
ありがとうございます
0105nobodyさん2011/11/04(金) 20:26:13.02ID:1sQ24kpb
.phpの中で、外部の.phpファイルを実行したいんですがそのときに引数も渡したいです

a.php
<?php
exec('/usr/lib/php /var/www/test.php 100 50 >dev/null 2>&1 &' ,$rec);
var_dump($rec);
?>

test.php
<?php
return $argv[1]+$argv[2];
exit();
?>

a.phpのvar_dump()の結果で150が返ってくることを期待してるんですが
実際は array(0) { } です
どこがおかしいんでしょうか?
0106nobodyさん2011/11/04(金) 20:43:28.90ID:???
>>105
なぜexecを使う。includeかrequireでいいじゃない。
0107nobodyさん2011/11/04(金) 20:46:36.43ID:1sQ24kpb
>>106
バックグラウンド処理というのをしたいんです
それで調べたらexec()と書いてありました
php.iniのsafe_modeもoffになってるんですが…
0108nobodyさん2011/11/04(金) 21:27:53.65ID:???
>>105
return で結果が返るわけないだろ
test.phpのところで返したい文字をechoで返せ
0109nobodyさん2011/11/04(金) 21:57:38.17ID:1sQ24kpb
>>108
test.php
<?php
$val= $argv[1]+$argv[2];
echo $val; //ダメでした
echo "test_val";//こっちもダメでした
?>
そもそもtest.phpをちゃんと実行できてるんでしょうか?
どうやったら確認できますか?
0110nobodyさん2011/11/04(金) 22:04:22.41ID:???
<?php info;?>
0111nobodyさん2011/11/04(金) 22:13:12.38ID:???
>>110
なにこれ?
0112nobodyさん2011/11/04(金) 22:15:25.20ID:1sQ24kpb
>>110
phpinfo()とは違うものですか?
とりあえずtest.phpをその内容に書き換えましたが何も起きません
0113nobodyさん2011/11/04(金) 22:26:01.42ID:???
>>109
>>109

test.php
exec('php test2.php 100 200', $o, $r);
var_dump($o);

test2.php
unset($argv[0]);
echo implode(",", $argv);
0114nobodyさん2011/11/04(金) 22:49:46.91ID:???
/dev/null 2>&1 & って付ければ そら、PHPは結果待たずに次ぎ行くけど、
( & だけだと 終わるの待つので)
結果 /dev/nullに捨ててんだから、 取得できんわな。

ファイルにでも出力すれば、処理が終わった頃にファイルに出力されるけど、
バックグラウンドで処理したいってんだから、その結果を
exex()抜けた段階で結果取得できるわけが無いでしょうに。
0115nobodyさん2011/11/04(金) 22:50:03.75ID:1sQ24kpb
>>113
ありがとうございます、しかしダメです
array(0){} が表示されるだけです
test2.phpの実行権限は755,775,777で試しましたが全部ダメでした
実行ユーザはftpuser(ftp権限ユーザ):apacheになってるんですが問題ありますか?
PHPそのものの問題とずれてきてすみません
0116nobodyさん2011/11/04(金) 22:51:47.43ID:???
>>115
とりあえず修正したコードを張ってみろ
0117nobodyさん2011/11/04(金) 22:54:31.81ID:1sQ24kpb
>>114
ありがとうございます
「/dev/null 2>&1 &」の部分は今は削除して以下のようにしていますがダメです

//test.php///////////////////
exec('/usr/lib/php /var/www/html/test2.php 100 50', $o, $r);
var_dump($o);
//test2.php//////////////////
unset($argv[0]);
echo implode(",", $argv);

そもそも、/usr/lib/phpはディレクトリなんですがこれは問題ないんでしょうか
0118nobodyさん2011/11/04(金) 23:01:03.05ID:???
>>117
var_dump($o); じゃなくて $r 見てみるといいかも。
当然ディレクトリじゃ駄目だし。
0119nobodyさん2011/11/04(金) 23:35:58.32ID:???
>>118
$rを見たら126が返ってきました
実行権限の問題らしいですが777で問題あるのかなぁ

>当然ディレクトリじゃ駄目だし。
…と思って、実行プログラムの方を /usr/bin/phpに変えたら上手く行きました!

長らくありがとうございました! 他の皆さんも感謝します、ありがとう
0120nobodyさん2011/11/05(土) 17:12:07.15ID:i9WzEjTE
初歩的な質問ですがよろしくお願いします

掲示板などで特定のタグだけ許可するにはどうしたらいいでしょうか?
0121nobodyさん2011/11/05(土) 17:54:33.07ID:???
でっかい文字列はJSONに詰め込めない?
0122nobodyさん2011/11/05(土) 19:43:18.54ID:rsIAWbTh
関数を呼びたいのですが、その関数内の処理が終わった後に戻ってきてほしくありません
このような場合とのように記述すればいいでしょうか
0123nobodyさん2011/11/05(土) 19:44:07.86ID:???
>>122
exit;
0124nobodyさん2011/11/05(土) 19:47:57.62ID:???
>>123
冷静に考えてみるとexitすればいいだけでした
ありがとうございます
0125nobodyさん2011/11/05(土) 22:29:46.48ID:bVUvResi
2つの配列があって、値が重複してないものだけDBに保存したくて
以下のように書いてみたのですが、もっとスマートな方法はないでしょうか?

foreach($str as $val) {
foreach($str2 as $check) {
if($val != $check) {
$sql = "INSERT INTO test(test) VALUES('" . $val . "')";
mysql_query($sql);
}
}
}
0126nobodyさん2011/11/05(土) 22:36:53.03ID:???
>>120
strip_tags($text, '<p><a>');

>>125
$str = array( 1,2,3,4 );
$str2 = array ( 2,3,4,5);
のとき、
insertされるのは  1,1,1,1,2,2,2,3,3,3,4,4,4 だけどいいのか?
0127nobodyさん2011/11/05(土) 22:56:55.77ID:???
>>125
http://www.php.net/manual/ja/function.array-diff.php
0128nobodyさん2011/11/05(土) 23:00:00.64ID:???
>>125
$a = array("a","b","c");
$b = array("d","c","e");
$c = array_count_values(array_merge($a,$b));

foreach ($c as $k => $v)
{
if (1 === $v)
{
echo $k, PHP_EOL;
}
}
0129nobodyさん2011/11/05(土) 23:03:06.58ID:???
>>125
あとなるべく緩い比較は使わず厳格な比較で書く癖をつけろ
0130nobodyさん2011/11/06(日) 00:07:04.37ID:???
>>125
http://www.php.net/manual/ja/function.array-unique.php
0131nobodyさん2011/11/06(日) 00:09:02.64ID:???
diffもuniqueも見当違い
0132nobodyさん2011/11/06(日) 00:10:50.58ID:???
>>125
http://www.php.net/manual/ja/function.array-intersect.php
01331252011/11/06(日) 01:51:22.75ID:/DBL4K4E
>>126
>>129さんの言うように!=じゃなくて!==としなくちゃいけないんですね。
勉強になりました。ありがとうございます。

>>127 >>130 >>132
おお!こんな便利な関数があったとは!
この3つを試してみます。ありがとうございます。
0134nobodyさん2011/11/06(日) 10:02:16.82ID:???
比較演算子の話じゃないけどまあいいか。
0135nobodyさん2011/11/06(日) 10:08:19.85ID:GxhRdhG7
日本語混じりの配列をjson_encodeでjson化してDBにINSERTしたら、
DBの中に保存した日本語部分が、「 ¥u30ab」 となっているはずなんですが、
「u30ab」 と 「¥」が抜けてしまいます。

原因が分からず・・・よろしくお願いします。
0136nobodyさん2011/11/06(日) 10:12:22.02ID:???
DBに入れる文字列をエスケープしてないんでしょう。
mysql_real_escape_string のようなのにかけるとか。

\\uにしなきゃ。
0137nobodyさん2011/11/06(日) 10:20:05.33ID:GxhRdhG7
>>136
あ!そっか!エスケープされてたのか・・・ケアレスミスでした
ありがとうございます!
0138nobodyさん2011/11/06(日) 10:48:35.74ID:???
>>133
おいせっかくサンプル書いたのに
0139nobodyさん2011/11/06(日) 10:57:55.15ID:???
>>138
使えないコードだったんでいりませんでした
0140nobodyさん2011/11/06(日) 12:31:41.62ID:yw0oOdZM
<?php include("./hoge.php");?>

とするとhoge.phpの内容がすべて表示されてしまいます。
これを個別のdiv単位で引用表示させる方法を教えてください。

【例】
<div class="a" id="b">
 <p>ほげほげ</p>
</div>
<div class="c" id="d">
 <p>ほげほげほげほげ</p>
</div>
とhoge.phpの中に上記のHTML文があるとして

この中から
<div class="a" id="b">
 <p>ほげほげ</p>
</div>
だけを引用して表示する方法を教えてください。
0141nobodyさん2011/11/06(日) 12:55:25.01ID:???
<div class="a" id="b">
 <p>ほげほげ</p>
</div>
だけのファイルを作ってincludeする


ていうかまともにやると今の君のスキルじゃたぶん無理だ
DOMでできるけど
http://jp.php.net/manual/ja/book.dom.php
後は俺ならfile_get_contentsと正規表現でさくっとやるけど
01421402011/11/06(日) 13:12:54.56ID:yw0oOdZM
>>141
他人のサイトからの引用なのでそれはできないです。
ソースを教えてください。
0143nobodyさん2011/11/06(日) 13:19:42.94ID:???
>>142
勝手に引用するのは、まずい場合もあるぞ
やり方わからないなら、やめておけ
01441402011/11/06(日) 13:31:27.29ID:yw0oOdZM
>>143
そのやり方を尋ねているんです><
0145nobodyさん2011/11/06(日) 13:38:48.91ID:???
>>144
俺の言ってること分かってる?
だから、勝手に引用することが法的にまずい場合もあるから、
そーゆーサイトを作ること自体をやめておけって、親切で言ってんの
0146nobodyさん2011/11/06(日) 13:39:06.14ID:???
ソースを教えてくださいって・・・
丸投げスレではないので作る能力がない人はお帰りください
01471402011/11/06(日) 13:47:51.07ID:yw0oOdZM
>>145
許可は得てるんで大丈夫です。
>>146
作り方の質問なんです。
0148nobodyさん2011/11/06(日) 14:02:00.07ID:???
>>147
>>141と同じく単なるDOMだ。あとはググれ
01491402011/11/06(日) 14:04:46.56ID:yw0oOdZM
>>148
ググれじゃなくて、その方法を詳細に教えてください><
 
教えてくれるまでこのスレに居座ります><
0150nobodyさん2011/11/06(日) 14:18:30.43ID:???
>>140
http://php.net/manual/ja/book.dom.php
0151nobodyさん2011/11/06(日) 14:19:20.88ID:???
>>149
xmlの読み込む方法は分りますか?
0152nobodyさん2011/11/06(日) 14:49:19.91ID:???
へたに教えるとしつこくからまれそうで躊躇するな。
質問者はそういうのも考えないと答えてくれる人を減らすばかりだぞ。
01531402011/11/06(日) 14:50:18.42ID:yw0oOdZM
>>150
 >>141と同じリンクじゃないですか><
 せめてそのページのどこに解説が載ってるのか教えてください!
>>151
 分かりません><
01541512011/11/06(日) 14:54:35.38ID:???
>>153
分りました
まずこれ見てください
http://goo.gl/3uGjU
0155nobodyさん2011/11/06(日) 14:54:59.53ID:???
xmlをわからないんじゃ、もうココで聞いても無理だな。
01561402011/11/06(日) 15:14:44.61ID:yw0oOdZM
>>155
死ね!
0157nobodyさん2011/11/06(日) 16:13:07.86ID:???
みんなやさしいなぁ、適当に答教えればいいでしょうが。
そんなに自分でやるように促しても、もったいないよ。

<html>
<head>
<style type="text/css">
#d {display: none;}
</style>
</head>
<body>
<?php include("./hoge.php");?>
</body>
</head>
0158nobodyさん2011/11/06(日) 16:50:54.65ID:???
亀釣り乙
0159nobodyさん2011/11/06(日) 20:10:35.79ID:???
>>157
>#d {display: none;}
うけたwwwwwww
0160nobodyさん2011/11/06(日) 20:43:01.49ID:???
ID:yw0oOdZM
これは久々にすごいのがきたなwww
丸投げを丸投げではないと仰る
0161nobodyさん2011/11/06(日) 20:59:02.31ID:???
もういいよ
0162nobodyさん2011/11/06(日) 21:11:09.35ID:???
提示された要求を満たすおそらくもっとも早い方法だったのにな。


じゃあ、これでいいか?
$text = file_get_contents("hoge.php");
preg_match("|<div[^>]*id=\"b\"[^>]*>(.*?)</div>|su",$text,$matches);
print $matches[0];
0163nobodyさん2011/11/06(日) 22:17:23.59ID:???
正規表現君こんばんは
0164nobodyさん2011/11/07(月) 01:03:58.74ID:???
シネって切れる奴、久しぶりに見たなぁ
ガキか
0165nobodyさん2011/11/07(月) 01:08:17.64ID:???
マニュアルの関数リンクとか貼られたら
それの例文見つつ組み立てられるやつじゃないと
このスレは難しい
初心者が自分のスキル以上の成果物を求めるのは
勉強してこいと門前払いされて当然
0166nobodyさん2011/11/07(月) 01:12:18.40ID:???
たまーに、こーゆーの湧いてくるよな
0167nobodyさん2011/11/07(月) 08:44:04.60ID:1lB9fRg6
mysqlにアクセスするバッチファイルに
root権限以外で実行すると
Lost connection to MySQL server during query
みたいな変なエラーがでます
どんな原因が考えられますか?
0168nobodyさん2011/11/07(月) 08:51:59.43ID:???
エラー全てを網羅してる人間なぞいるわけ無いでしょ。
そのエラーで検索すればいくつか原因がありそうだから、
1個1個確認してくしか。

せめて、検索してXXと○○試したけどダメでした、他の原因知ってる方いませんか、でしょ。
0169nobodyさん2011/11/07(月) 08:54:34.52ID:???
せめてmysqlスレできこうや
0170nobodyさん2011/11/07(月) 12:06:17.73ID:???
たいていマニュアルのリンク張られても全然関係ない場合もある
01711402011/11/07(月) 14:00:16.85ID:hVnG4+j0
誰か教えてください><
0172nobodyさん2011/11/07(月) 14:27:54.46ID:???
>>171
つ 知恵袋
0173nobodyさん2011/11/07(月) 14:29:59.52ID:???
知恵袋で質問してggrksと煽られてしね
01741402011/11/07(月) 14:33:51.26ID:hVnG4+j0
>>172-173
意地悪しないでお願いします><
0175nobodyさん2011/11/07(月) 14:37:07.55ID:???
>>174
>>156
0176nobodyさん2011/11/07(月) 14:40:17.49ID:???
>>174
何個か書いてもらった、>>157 とか >>162 とか試した?
質問するなら、それじゃだめだったってことだろ?
試してからどこがダメだったか書かないと、誰も教えてくれねぇよ
試してないとしたら、せっかく書いてくれたのにやらない奴は最低だ
01771402011/11/07(月) 14:45:52.15ID:hVnG4+j0
>>176
 >>157はスタイルシートで非表示にしているだけなので却下。
 話にもなりませんわ。
0178nobodyさん2011/11/07(月) 14:50:59.65ID:???
なんだ、普通に完全回答出してもらってるのに分からないっていってるのか
0179nobodyさん2011/11/07(月) 14:55:24.82ID:???
だって176の趣旨の3行目が読めない時点で文盲だろ
0180nobodyさん2011/11/07(月) 14:55:26.68ID:???
>>177
表示だけならそれでも問題ないはずだぞ。
ぶっちゃけ、その方がサーバー負荷は軽減する。
レスポンスタイムはPHPでやろうがCSSでやろうが一緒。
だから、CSSでやる場合のダメな点を挙げてから質問しなって。
0181nobodyさん2011/11/07(月) 14:59:41.08ID:???
dom出力するときに頭のデータだけ表示すりゃあいいじゃん
01821402011/11/07(月) 15:00:07.62ID:hVnG4+j0
>>179
試す価値もないということが分らんのか負け犬めが
0183nobodyさん2011/11/07(月) 15:02:03.17ID:???
>>182
もうお前駄目だ・・・せっかく手ほどきしてもらってんのに・・・
自滅だな
0184nobodyさん2011/11/07(月) 15:04:23.38ID:???
何がしかの反応が欲しいだけの釣りだと思うよ
0185nobodyさん2011/11/07(月) 15:17:26.67ID:skZKPuIx
スレチかもしれませんが、PHPで作っているのでここで質問させて下さい。
同じドメインでUAを見て、モバイル(スマホ)サイトとPCサイトを出し分けてます。
PC版サイト内にiframeでモバイルサイトを表示したいんですが、
URL固定にして、いい方法ないでしょうか・・・
iframeだけUA偽装とかは無理ですかね?
URLに引数つけてUAの判断が妥当でしょうか?

よろしくお願いします。
01861402011/11/07(月) 15:17:27.68ID:hVnG4+j0
へ理屈はやめて、さっさと教えてください><
0187nobodyさん2011/11/07(月) 15:21:25.17ID:???
>>185
.htaccessで設定すればよい
0188nobodyさん2011/11/07(月) 15:21:50.05ID:???
>>185
iframeにモバイル用のないよう表示させればいいじゃない
0189nobodyさん2011/11/07(月) 15:24:04.45ID:???
>>185
includeでモバイル用URLを指定すればいいだけのこと
0190nobodyさん2011/11/07(月) 15:28:08.43ID:???
日付またがって本物かどうか分からないわけだが。
なんでまたがる前にトリップつけるとかやんなかったの?と、成りすましに言ってもしょうがないが。
0191nobodyさん2011/11/07(月) 15:28:38.90ID:???
どうせ人様のサイトを勝手に使おうとしてるんだろう
0192nobodyさん2011/11/07(月) 15:31:43.54ID:skZKPuIx
>>187 >>188 >>189
すいません。説明不足でした・・・
同じURLでPC/MobileをPHPで出しわけしてるんで
コレが実現できるいい方法がないかなと。。。
.htaccessだとUAがPCだと判断されてしまいます。

http://example.com/ にアクセスすると
<html>
<body>
<div>hoge</div>
<iframe src="http://example.com" />
<!-- このiframe内がモバイルサイト -->
</body>
</html>

0193nobodyさん2011/11/07(月) 15:32:57.81ID:???
>>185
やっぱ、iframeのurlに引数を一つ追加して、それをモバイルのフラグに割り当てるべきだとおもう
擬似的なiframeを使うって手段も思い付いたが、
ページ遷移への対応を考えると絶望的に手間がかかるっぽいし。
0194nobodyさん2011/11/07(月) 15:37:02.16ID:???
そもそも、iframeなんてやめちまえというのが本来の姿だと思うんだけど、
もうむり?
0195nobodyさん2011/11/07(月) 15:38:10.27ID:ViAJy6ja
exec();について知りたいのですが
 exec("/usr/bin/php /var/test.php {$params} ", $o, $r);
 echo "レスポンス:".var_dump($r);
 echo "出力:".var_dump($o);
のようにしてる時
引数$paramsには配列やserialize()した配列を指定できないんでしょうか?

引数$paramsが $params = array("dog", "cat");
test.phpが以下の内容の時、
<?php echo $argv[1][0]; ?>

1)配列を引数にした場合
 なぜかAが出力されます
 レスポンス:int(0)
 出力:array(1) { [0]=> string(1) "A" }
2)serialize()した配列を引数にした場合
 レスポンス:int(2)
 出力:array(0) {}

配列はそのままでもserialize()してもダメなんでしょうか?
また、1)のケースのときの、返り値Aはどこから来たんでしょうか?
配列を渡す方法があったら教えてもらえると助かります、よろしくお願いします
0196nobodyさん2011/11/07(月) 15:41:18.73ID:skZKPuIx
>>193
やっぱそうですかねw
output_add_rewrite_varで値を引き継げるようにすればいいか。
どもっす!

>>194
Mobile/SmartPhoneに特化してるんで、
PC版には、使い方やら広告やら載せようかってしてたんですが、
どうせだったら、Mobile版見れるようにのっけちゃえって判断になりましたw
0197nobodyさん2011/11/07(月) 15:46:06.61ID:???
>>195
配列を文字列化した結果の先頭一文字がAだから。
シリアライズしたならデシリアライズすること。

あとはコマンドラインについて勉強しなされ。
0198nobodyさん2011/11/07(月) 15:48:42.82ID:???
>>195
seializeしたのをつけたコマンドを一度echoして、それをコマンドラインで打って試した?
なんか記号がいろいろ邪魔してそうだけど
0199nobodyさん2011/11/07(月) 16:08:26.98ID:???
splite3を使ったサイトを作ってるんですが、
テーブルのカラムが30を越えるような感じになっていて、
新規作成するときのsqlもインサートのチェックもかなり長くてややこしいことになってしまうので、
テーブルの作成やデータチェックが分かりやすく書ける
そんなライブラリってないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています