トップページ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等)・フレームワークは各該当スレへ
0556nobodyさん2011/11/16(水) 20:14:59.77ID:???
$items = array("enter_1"=>"name1" ,"enter2"=>"name_2" ,"enter_3" =>"name_3" );
foreach( $items as $var=>$val)
if ($_POST[$var])echo $_POST[$val];
---------------------------------------------
for($i=1;$i<=3;$i++)
if ($_POST["enter_$i"])echo $_POST["name_$i"];


(セキュリティについてはサンプルってことで書かないけど、
こういうのが ネットにこう書いてあったって使われちゃったり)
0557nobodyさん2011/11/16(水) 21:12:17.78ID:???
同じブラウザを複数立ち上げて、同じ場面で異なるデータを表示させ登録などの処理をさせたいと考えています。
普通h同じセッションになるので不可能だと思いますが何か方法があれな教えて下さい。
0558nobodyさん2011/11/16(水) 21:33:32.05ID:???
>>557
あせりすぎ。何を言ってるのか訳がわからんので、もう一度日本語を読みなおしてくれ。
0559nobodyさん2011/11/16(水) 21:41:56.86ID:???
>>557
たとえばIEだとAlt F I で別セッションはれる
05605532011/11/16(水) 22:11:49.03ID:eLkUclYQ
>>555
最近勉強し始めたので、セキュリティはあまりわかっていません…。
サニタイジングはもちろんします。今回は長くなるので省略しましたが…。
0561nobodyさん2011/11/16(水) 22:44:23.46ID:???
var_dumpについて質問させてください。

var_dumpの結果をechoで出そうと思い、以下のスクリプトを作成しました。
~$ cat hoge.php
#!/home/php/bin/php
<?php
$data = 'aaa';
$result = var_dump($data);
echo "result=$result\n";
?>

ところがこのスクリプトを実行すると、結果が以下のようになってしまいます。
~$ ./hoge.php
string(3) "aaa"
result=

おそらく、var_dumpの結果がresultに入ってないと思うのですが、
そうするためにはどうしたらいいでしょうか?
0562nobodyさん2011/11/16(水) 22:51:04.72ID:+5IKw5hh
ごめんなさいID出し忘れました
0563nobodyさん2011/11/16(水) 23:01:58.01ID:???
>>561
http://php.net/manual/ja/function.var-dump.php
マニュアルを読もう
答えがそのまんま書いてある
0564nobodyさん2011/11/16(水) 23:08:04.54ID:???
なやみそうだからprint_rにするといいよ
0565nobodyさん2011/11/16(水) 23:12:27.50ID:???
>>561
ver_export使えば良いよ
0566nobodyさん2011/11/16(水) 23:13:03.42ID:???
たいぽ・・・
var_exportね
0567nobodyさん2011/11/16(水) 23:24:57.87ID:???
>>554
ワイルドカードなんてものはないのでループなり自分で調べるしかない
普通は配列で扱う

<?php
foreach ($_POST['enter'] as $id) { echo $_POST['name'][$id]; }
for($i = 1; $i <= 3; $i++) {
 printf('<input type="text" name="name[%s]"><input type="submit" name="enter[%s]" value="送信">', $i, $i);
}
0568nobodyさん2011/11/16(水) 23:40:12.68ID:???
actionによるコントロールをだな・・・
0569>>5612011/11/17(木) 00:36:00.90ID:P0oL6Kj5
みなさん深夜遅くにありがとうございます。

マニュアルをみたのですが、var_exportの説明は以下のようになっています。
説明:”変数の文字列表現を出力または返す”

そして、var_dumpの説明は以下のようになっています。
説明:”変数に関する情報をダンプする”

以下の3つの具体的な意味についてご教授ください。
「ダンプする」
「出力する」
「返す」
0570nobodyさん2011/11/17(木) 01:07:37.67ID:???
実際動かしてみろよ
05715532011/11/17(木) 01:37:36.08ID:70iwFN0D
>>567
ありがとうございます。
Linuxにあるので、あるものだと思っていました…。
それを参考に書いてみようと思います。
0572nobodyさん2011/11/17(木) 02:09:20.00ID:???
>>569
>>564はなぜスルーされたのか。。

>>571
Linuxにあるんじゃなく、シェルにある。
phpでなら正規表現を使えばいいよ
0573nobodyさん2011/11/17(木) 03:41:11.72ID:???
ワイルドカードによるマッチはfnmatch
0574nobodyさん2011/11/17(木) 11:44:23.47ID:???
エンジニアなめられすぎ、ワロタ
http://www.lancers.jp/work/detail/27050
0575nobodyさん2011/11/17(木) 13:59:57.52ID:izk/KJxq
300円
0576nobodyさん2011/11/17(木) 17:29:14.46ID:0Ntos03V
$date = '2011-11-17';
if (isset($date'day'])) {
 echo 1;
} else {
 echo 0;
}

とした場合、配列でもないのに1が表示されます。
「$dateが配列で、連想配列のdayが存在する場合」
という条件式はどう書けばいいのでしょうか?
0577nobodyさん2011/11/17(木) 17:30:10.36ID:???
すみません。2行目は入力ミスでした。正しくは↓
if (isset($date['day'])) {
0578nobodyさん2011/11/17(木) 17:40:40.09ID:???
is_array()
0579nobodyさん2011/11/17(木) 17:48:00.34ID:???
if_array($date) {
if (isset($date['day'])) {

こんな感じですか。でも、これって$date自体がなかったらエラーになりませんか?
0580nobodyさん2011/11/17(木) 18:16:28.76ID:???
>>579
$date = null;
var_dump(isset($date,$date['day'])); // false

$date = array();
var_dump(isset($date,$date['day'])); // false

$date = array('day'=>null);
var_dump(isset($date,$date['day'])); // false

$date = array('day'=>'');
var_dump(isset($date,$date['day'])); // true

$date = null;
var_dump(isset($date) && is_array($date)); // false

$date = array();
var_dump(isset($date) && is_array($date)); // true

$date = array('day'=>null);
var_dump(isset($date) && is_array($date) && isset($date['day'])); // false

$date = array('day'=>'');
var_dump(isset($date) && is_array($date) && isset($date['day'])); // true

これぐらいは自分で試せ
0581nobodyさん2011/11/17(木) 19:06:01.97ID:???
>>576
すこし話はずれるけど、そもそもの事象について説明しとく。

isset($date['day']) が真になる理由だけど、
$dateが配列ではなく文字列のため、添え字演算子は文字列インデックス(整数)を要求することになる。
んで、'day'を整数評価した値は0になるため、
isset($date['day'])はisset($date[0])となり、$date[0]は1文字目、つまり'2'が設定されているため、真になる。

なのでこうする。
isset($date) && is_array($date) && isset($date['day'])
array_key_existsとの違いにも気をつけること。

>>580
関係ないことずらずら書いててワロタ
0582nobodyさん2011/11/17(木) 19:29:07.37ID:???
>>581
関係なくはないだろ
0583nobodyさん2011/11/17(木) 19:38:01.70ID:0Ntos03V
>>580-582
ありがとうございます。大変勉強になりました!
0584nobodyさん2011/11/17(木) 23:51:19.67ID:???
echoで
<form 〜
<input type="hidden"〜
<a href="javascript:document.form.submit()">〜
</form>
の順で出力させてるのに、
ソースコード見たら
<form 〜 ></form>
<input type="hidden"〜
<a href="javascript:document.form.submit()">〜
の順で出力されてる…怖い…
0585nobodyさん2011/11/18(金) 00:04:54.25ID:???
>>584
結果だけじゃわからん。ソース晒せ
0586nobodyさん2011/11/18(金) 00:09:05.38ID:???
>>585
あとテーブル使ってますが絶対に記述してない<tbody>が出力されてます
ajaxで書き換えた後のソース部分なんですが…
0587nobodyさん2011/11/18(金) 00:11:05.06ID:???
>>586
それって、Firebugの補完機能じゃなくて?
0588nobodyさん2011/11/18(金) 00:14:48.11ID:???
PHP関係なさげJS部分をJSスレで聞いてこい
0589nobodyさん2011/11/18(金) 00:26:14.18ID:???
>>587
firebugは入れてないです
別のPCのfirefoxだとソース部分ではちゃんと順番に出力されてますがそのリンク自体が表示されなくなりました…
0590nobodyさん2011/11/18(金) 00:45:57.86ID:???
あ、選択したソースを表示すると補完されるんですね…失礼しました
0591nobodyさん2011/11/18(金) 00:49:20.18ID:???
原因が判明しました。
ajaxで書き換えるソースコードが書かれているphpファイルに
ヘッダタグ等の必要な情報を一切書いていなかったのが原因でした。
大変失礼しました…
0592nobodyさん2011/11/18(金) 01:17:56.35ID:???
>>591
書き換えるなら、headタグとかいらないんじゃない?
kwsk
0593nobodyさん2011/11/18(金) 13:07:57.29ID:0E07J79Y
Googleとかもそうですが
リンク先のページの全体像みたいのが画像で表示されますが
HTMLを画像にするようなことができるのでしょうか?
何か関数やヒントになるキーワードがあれば教えてください
0594nobodyさん2011/11/18(金) 13:17:06.96ID:???
>>593
キャプチャ PHP
でggr
05955932011/11/18(金) 13:23:38.38ID:0E07J79Y
>>594
ありがとうございます!
0596nobodyさん2011/11/18(金) 16:34:31.24ID:CLCMBLd4
windows7とさくらのレンタルサーバーでphpを使っています。
ファイル名に日本語を使いたいのですが、文字コードの指定が分かりません。

まず、windowsのファイル名の文字コードはUTF-8との事ですが
UTF-8のphpから
error_log("test",3,"ログファイル.txt");
と書いて"ログファイル.txt"というファイル名のファイルを作ったつもりでも、作成されたファイルをエクスプローラで見ると文字化けしてしまいます。
mb_convert_encoding($file,"SJIS-win","UTF-8");とファイル名の文字コードを変換すれば正常なファイル名が作成されるのですが
UTF-8のはずのwinodowsで何故sjisへの変換作業が必要なのでしょうか

これが解決出来れば、ファイル名は全てutf-8で統一されてファイル名の文字コードに気を使う事が無いのですが。
0597nobodyさん2011/11/18(金) 16:59:21.29ID:???
PHPが対応してないので。
0598nobodyさん2011/11/18(金) 17:08:53.82ID:???
ファイル名に日本語を使うのを止めろ
0599nobodyさん2011/11/18(金) 17:27:57.11ID:jAJu9/rr
様々な条件下で、生成されたGET要素入りURLの後ろに
sort系のGETを入れたいと思っています。

hoge.com?page=1&type=1… 様々な GET…  &sort=asc
hoge.com?page=1&type=1… 様々な GET...  &sort=desc

これにより、様々な条件下で抽出されたリストから
並びかえができるようになってるのですが、

"様々な条件下で、生成されたGET要素入りURL"

は、どうやって取得したらよろしいでしょうか。
0600nobodyさん2011/11/18(金) 17:56:56.87ID:???
getenv('QUERY_STRING')のことかなと思ったんだけど、
$url = explode("?",$url);
print $url[1];
かもしれない。
0601nobodyさん2011/11/18(金) 18:42:37.23ID:???
>>600
嘘教えるな
getenv('QUERY_STRING')の返り値に?なんて含まないぞ
0602nobodyさん2011/11/18(金) 18:46:18.02ID:???
>>596
Windows内部でユニコードで扱われてても、cp932に変換されているから
0603nobodyさん2011/11/18(金) 18:52:56.78ID:???
>>601
様々な条件下で、生成されたGET要素入りURLってのが、アクセスしてきたアドレスとは
限らないじゃないかというオチャラケだよ。
本人が違うって書いてくれればいろいろ分かるのに。

>>602
ユニコードで取得する方法はあるから、PHPが対応してないってこと。
0604nobodyさん2011/11/18(金) 22:23:23.54ID:???
横でスマンがgetenv('QUERY_STRING')の返り値に?が入っていることを期待したコードなんて書いてなくね?
>>601は落ちつくべき。
0605nobodyさん2011/11/18(金) 23:04:14.52ID:???
涙拭けよ
06066002011/11/18(金) 23:05:20.43ID:???
いや、俺が悪いんだよ。
0607nobodyさん2011/11/18(金) 23:25:01.53ID:tf7WOWeB
PHPでWeb上の画像を取得するには、file_get_contents()以外には
どのようなものがあるのでしょうか?
0608nobodyさん2011/11/18(金) 23:26:24.08ID:???
たとえばどういう機能がほしいとか、何が不満とか書いてくれないとどうにもならんと思わない?
0609nobodyさん2011/11/18(金) 23:33:45.04ID:???
>>607
curl
0610nobodyさん2011/11/18(金) 23:41:33.43ID:???
fopen
0611nobodyさん2011/11/18(金) 23:46:36.76ID:tf7WOWeB
>>608
すみません
ただ単純に、画像を取得して例えばブラウザに表示させたいと思いまして
自分はcURLを使って全体を取得してテキスト文はDOM使って表示させたのですが、
画像の表示のさせ方が分からなかったもので

0612nobodyさん2011/11/18(金) 23:47:30.32ID:???
>>611
<img src="DOMで取得したパス">
0613nobodyさん2011/11/18(金) 23:57:18.17ID:???
ブラウザに表示させたいなら画像データをわざわざ取得する意味なくね?
プロキシみたいなことしたいのかな
0614nobodyさん2011/11/19(土) 00:01:05.04ID:djjAwZHJ
>>612
なるほど・・・
確かにそうですね
教えてくれてありがとうございます
ちょっと試してみます
0615nobodyさん2011/11/19(土) 00:07:40.97ID:???
っloadHTMLFile
0616nobodyさん2011/11/19(土) 00:07:46.89ID:djjAwZHJ
>>613
データベースやディレクトリに保存しようと思いまして
ブラウザは簡単なテスト環境と思いまして
0617nobodyさん2011/11/19(土) 00:10:43.56ID:???
エロ画像ダウンローダ乙
0618nobodyさん2011/11/19(土) 00:14:21.83ID:???
話が変わってるワロタ
0619nobodyさん2011/11/19(土) 00:29:41.91ID:djjAwZHJ
>>617
ハハハ、いや、エロ画像を集めるつもりはないのですが・・・

しかし訳がわからなくなってきました
cURLで取得したHTMLを(CURLOPT_RETURNTRANSFERを使用しているのでファイルには保存していません)、
DOMDocumentにてloadHTMLしてquery('//img/@src')などとしたし、
ブラウザに表示する場合はhttp://hoge.com/を付けるのまでは分かるのですが、
こっからどのような処理をすればディレクトリやデータベースに格納できるのでしょうか?
ザッと見、cURLやDOMDocument系にはそのような関数がないように思えるのですが
0620nobodyさん2011/11/19(土) 00:36:38.62ID:???
>>619
file_get_contents
0621nobodyさん2011/11/19(土) 00:40:35.70ID:djjAwZHJ
>>620
あぁ、やっぱそうなると>>611で質問したように、
file_get_contents()しかないんでしょうか?
0622nobodyさん2011/11/19(土) 00:43:32.98ID:???
fopenでもfsockopenでもcURLでもなんでも保存できるだろう
0623nobodyさん2011/11/19(土) 00:52:21.80ID:???
>>621
file()
0624nobodyさん2011/11/19(土) 00:54:00.85ID:???
imagecreatefromjpegなりでも使えばいいんでない
0625nobodyさん2011/11/19(土) 01:57:43.95ID:???
>>621
>>611でブラウザに表示したいなんていうから…
0626nobodyさん2011/11/19(土) 11:06:26.33ID:???
よそ様から拾ってきたものを自分のサイトで表示したいってパクル気満々だな
0627nobodyさん2011/11/19(土) 12:50:04.81ID:???
proxyかもしれないじゃん
0628nobodyさん2011/11/19(土) 15:09:54.67ID:djjAwZHJ
配列に値を格納していて、その中から正規表現等でフィルタリングして
マッチした値を排除するような使い方をしたいのですがどのようにすればいいのでしょうか?
foreach()で値を得て、それらを正規表現で・・・と思ったのですが
$iのように数字を使い、array_slice()を使うのかなとも思いましたが良く分かりませんでした
0629nobodyさん2011/11/19(土) 15:12:40.62ID:???
>>628
配列内の値が分からないと何も言えないが
preg_match continue
で、ぐぐってみ
0630nobodyさん2011/11/19(土) 15:28:21.89ID:???
>>629
その場合はarray_slice($arr, $i-1, 1)とかのようにするのでしょうか?
それとも全く別の配列を作成し、マッチしなかったものをその別の配列に入れるのがいいのでしょうか?
0631nobodyさん2011/11/19(土) 15:30:17.28ID:???
>>630
ID
0632nobodyさん2011/11/19(土) 15:32:54.65ID:???
>>630
自分は、他人(新人or後任者)が見てもわかりやすいように書いてるから、新しい配列に入れるね
自分一人だけだったら、いろいろなやり方試してみてもいいんじゃない?
0633nobodyさん2011/11/19(土) 16:18:00.10ID:ZMwiibDD
PHPで、

hoge()[0]

のような書き方はできないのでしょうか?
(hoge()は配列を返す)。

array_shift(hoge())

で、いちおうできるのですが、
ちょっとカッコ悪いので・・・
0634nobodyさん2011/11/19(土) 16:19:02.24ID:???
$array = array(1,2,3,4,5,6);

foreach($array as $key => $val )
if ($val % 2 == 0)
unset($array[$key]);

print_r ($array);
0635nobodyさん2011/11/19(土) 16:41:28.68ID:???
>>633
php5.4
0636nobodyさん2011/11/19(土) 16:44:31.71ID:???
PHP5.4になったらarray()なんてもう二度と書かない
0637nobodyさん2011/11/19(土) 18:58:14.72ID:X5SG6smt
5.4でできるようになるのか
そういや6.xってどうなったんだ・・・?
0638nobodyさん2011/11/19(土) 19:43:45.93ID:???
目玉になるはずだった部分があまりにも厄介すぎて頓挫
0639nobodyさん2011/11/20(日) 01:46:04.87ID:???
6ってもう二年前から声聞いてるが未だに出てこないな
もし、これが企業のプロジェクトだったらマネジメント層全員減給またはクビだぞ
0640nobodyさん2011/11/20(日) 01:57:47.15ID:???
企業でも年単位の計画でやるような物だから問題ないだろ多分
0641nobodyさん2011/11/20(日) 01:57:57.34ID:???
トレイトって何?食えるの?
0642nobodyさん2011/11/20(日) 02:00:04.50ID:???
>>641
神機能
0643nobodyさん2011/11/20(日) 02:11:39.42ID:???
>>642
神とは思えないんだが

よく設計されたもの以外で使われるとスパゲッティー化されそうで怖い
0644nobodyさん2011/11/20(日) 02:46:59.47ID:1V6hVVY4
$sql = 'SELECT id FROM table LIMIT 1';
$result = mysql_query($sql);
で、取得したひとつのデータを変数に代入したいのですが
while(mysql_fetch_array($result)){処理}
みたいに書くしかないんでしょうか。
データ一件しかないのにwhileを使うのが気持ち悪いので
他の方法があればそちらを使いたいです。
0645nobodyさん2011/11/20(日) 02:49:07.99ID:???
公式見て、実装込みのインターフェイスみたいだな、
とおもったら大抵のサイトがそういう説明になってたから理解しにくいものじゃなさそうだね
0646nobodyさん2011/11/20(日) 02:54:04.97ID:???
>>644
mysql_fetch_rowは?
0647nobodyさん2011/11/20(日) 03:00:08.98ID:???
>>646
どんぴしゃです。ありがとうございました。
0648nobodyさん2011/11/20(日) 09:20:32.62ID:???
>>644
データが一件しか無いならループさせなくても変数だけでデータ取れるよ
0649nobodyさん2011/11/20(日) 12:59:03.75ID:???
>>640
そろそろ…って声聞いて二年経ってんだよ
PHP6.0の開発自体は2005年から開始している
こっちはどこがどう変更されるのかピリピリしてんのによ
もう出すなよ、PHP5.2193くらいまでやればいい
0650nobodyさん2011/11/20(日) 13:01:37.43ID:???
php6の開発なんていましてないでしょ
php5.5の勘違いじゃないの?
0651nobodyさん2011/11/20(日) 13:42:09.57ID:???
6 = 5.4
0652nobodyさん2011/11/20(日) 14:50:05.47ID:???
5.4が6とかwwwwwwwwwww
0653nobodyさん2011/11/20(日) 14:52:32.63ID:W2VBDeCo
あるリンクからそのページのレスポンスを確認したいと思います
そのリンクが200なのか304なのか、404なのかといった具合にです
その為だけにcURLやfile_get_contents()でページごと取得するのも
無駄だと思いまして
get_headers()というのがあり試してはみましたが、一般的にはこれを使えばいいのでしょうか?
それとももっといい関数やライブラリががあるのでしょうか?
ステータスコードのみ取得して軽いというなものがあれば教えていただきたいです
0654nobodyさん2011/11/20(日) 15:20:15.39ID:???
PHP6とPHP5.4は違いますよ
0655nobodyさん2011/11/20(日) 16:05:24.08ID:???
>>653
get_headers() でok
やってることはみんなHEADメソッドで取得してるだけだからね
http://php.net/manual/ja/function.get-headers.php#example-3635
0656nobodyさん2011/11/20(日) 16:30:35.68ID:???
get_headersはGETなんだけどね
■ このスレッドは過去ログ倉庫に格納されています