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

【PHP】下らねぇ質問はここに書き込みやがれ 49

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/06/26(火) 03:03:40ID:ox2uyHLd
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0362nobodyさん2007/07/01(日) 20:53:56ID:SEZkjrix
>>361
値を渡してもなります。
教えてくださったものだと、NULL、改行(<br />)のあとにエラー文が出ます。
03633622007/07/01(日) 20:58:53ID:SEZkjrix
すみません、勘違いです。
NULLではなくて、string(1) "a"といった感じです。
「a」を送信しています。
03643622007/07/01(日) 21:00:55ID:SEZkjrix
3レスすみません。
今値を送ってみたところ、受け渡しされている場合はエラーは出ていません。」
0365nobodyさん2007/07/01(日) 21:01:33ID:???
>>359
'/<textarea.*>(.*\n)+<\/textarea>/Ums'
0366nobodyさん2007/07/01(日) 21:02:27ID:AE1jLbRL
>>365
有難う御座います、解決しました。
mは複数行、sはスペースですよね。
Uとは何なのでしょうか?
0367nobodyさん2007/07/01(日) 21:09:27ID:???
>>366
ttp://jp.php.net/manual/ja/reference.pcre.pattern.modifiers.php
0368nobodyさん2007/07/01(日) 21:12:28ID:IsU+PNQg
ok07dayo@yahoo.co.jp
※退会処理手続きに10〜14日間の時間をいただいております。
 退会処理後に再度、メールが送信されることがあるかもれません。
 退会手続き後、複数回メールが送付される時はお手数をおかけしますが、
 再度退会手続きの空メールを送信してください。

ってメールがきたんだけど、これをphpで迷惑メール対策したいのですが
何かいい案はありませんか?
0369nobodyさん2007/07/01(日) 21:19:46ID:???
>>368
その質問は
「朝日新聞の勧誘が来たんですが
 これを合気道で迷惑勧誘対策したいのですが」
並に意味不明なわけだが
0370nobodyさん2007/07/01(日) 21:36:36ID:???
>>364
じゃ関数の実行は成功してるんじゃないでしょうか
0371nobodyさん2007/07/01(日) 21:51:18ID:SEZkjrix
>>370
ありがとうございます。
先程まで、var_dump($test);を抜くとエラーが出てくるという状況だったのですが、
今確認したところ直っておりました。

何だかよくわからない事に初心者が無理に手を出してしまったのがまずかったのだと思いますが、
解決しました。
長く、丁寧に教えてくださって、本当にありがとうございました。
0372nobodyさん2007/07/01(日) 22:20:29ID:???
>>361
どうもありがとうございます。
0373nobodyさん2007/07/02(月) 00:33:57ID:5ynC2VCo
>>369
正規表現でキーワードをひっかけるやり方を考えたのですが、それだと
迷惑ではないメールもひっかかってしまうと思うんです
0374nobodyさん2007/07/02(月) 00:38:59ID:???
迷惑メールとは何か、その要件定義が明確にできないなら、
そもそもシステム化はできない。
 by ケビン・コスナー
0375nobodyさん2007/07/02(月) 00:46:01ID:???
>>373
自前のサーバでメール管理してんのか?
PHPでやることはないと思うけどPHPでもできるな
ヘッダとかである程度対応できるでしょ。
Date: に +0900 を含まないものは削除とか。
0376nobodyさん2007/07/02(月) 00:55:17ID:???
>326 >329 >368 わろた
0377nobodyさん2007/07/02(月) 01:01:49ID:???
単純に「自分宛てメール」からスパムを除きたいだけなら
Thunderbirdのメールフィルタでも使えば
0378nobodyさん2007/07/02(月) 01:40:40ID:SNqTzj8t
・環境はPHP+MySQL
・「ユーザ」に複数の「カテゴリ」が設定されている

user
|user_id|user_name|
user_category
|user_category_id|user_id|category_id|
category
|category_id|category_name|

こんなテーブルがあるとして、
ユーザの一覧とそれぞれに設定されているカテゴリを

array(
 0=>array("user_id"=>1,"user_name"=>"山田","user_category"=>array(
  0=>array("category_id"=>3,"category_name"=>"hoge"),
  1=>array("category_id"=>5,"category_name"=>"fuga")
  )
 ),
 1=>array("user_id"=>2,"user_name"=>"鈴木","user_category"=>array(
  0=>array("category_id"=>1,"category_name"=>"foo")
  )
 )
)

最終的にこんな形の配列で取得したい。
こういう時のアプローチとして
(1)SQLクエリの結果配列をプログラム側で変形させる
(2)SQLクエリを二回にわけてプログラム側でくっ付ける
(3)テーブルを崩す(userにphoto_idの繰り返しを持たせる)
以外のものは無いでしょうか。
0379nobodyさん2007/07/02(月) 01:52:56ID:EsE4UsKv
$hoge = 'foobar':
$name = 関数名($hoge);
$nameに変数名'hoge'が取得できるような関数ってある?
03803782007/07/02(月) 01:53:56ID:???
SQLでどうにかなりそうな気がするんですが

(1)
SELECT * FROM user
LEFT JOIN user_category ON user_category.user_id = user.user_id
LEFT JOIN category ON category.category_id = user_category.category_id;

(2)
 (a)SELECT * FROM user;

 (b)SELECT * FRON user_category
INNER JOIN category ON category.category_id = user_category.category_id
WHERE user_category.user_id = {$item} ;

(b)をユーザ数だけPHP側でループ

(1)と(2)はこんな感じのイメージです。
これだとパフォーマンス的にあれなのと、
もっとスマートな方法があると思うので、
どなたかご教授お願いします。
0381nobodyさん2007/07/02(月) 01:54:24ID:???
>ってある?

あるかないかでいうならある。
ユーザー関数を利用すればある
0382nobodyさん2007/07/02(月) 01:57:19ID:EsE4UsKv
>ユーザー関数を利用すればある
ありがとう、勉強してきます
0383nobodyさん2007/07/02(月) 02:00:49ID:???
serialize/unserialize って重いの?
0384nobodyさん2007/07/02(月) 03:14:40ID:???
image_graphですがなんとかグラフ表示するところまでできましたが
表示される画像の形式の変更の仕方がわかりません
グラフのコードの書かれた.PHP内の
$Graph =& Image_Graph::factory('graph', array(array('width'=>512, 'height'=>280, 'canvas' => 'JPG')));
でJPGとしたら画像はあらくなってJPGっぽくなったのですが
右クリック保存にするとBMPになってしまいます
0385nobodyさん2007/07/02(月) 03:28:16ID:???
まず>>1は読みましたかね?384君
0386nobodyさん2007/07/02(月) 03:48:48ID:???
最近、googleで[php 関数名]で検索しても、
PHPオフィシャルのマニュアルが、
最初のページ内にすら出てこないこと多くね?
0387nobodyさん2007/07/02(月) 04:03:33ID:???
関数なんかgoogleであまりぐぐらんが、(馬から落馬みたいだな)
今やってみたら確かにそういう傾向はあるな。
ちなみにfput
0388nobodyさん2007/07/02(月) 04:08:02ID:???
マニュアルダウンロードしないの?
0389nobodyさん2007/07/02(月) 08:56:28ID:???
マニュアルは全て頭の中にある
0390nobodyさん2007/07/02(月) 11:02:07ID:???
phpからサーバー上のexeを実行する方法について調べているのですが、
phpのセーフモードを解除せずにする方法って何かあるのでしょうか?
0391nobodyさん2007/07/02(月) 11:11:01ID:???
batとcronでまわしてください
0392nobodyさん2007/07/02(月) 11:12:42ID:???
>>390
safe_mode_exec_dirで設定されたところに置かれたものは可能。そこに
なければ不可能。

勝手に何でも起動できちゃセーフモードの意味ないだろ。

未知のあるいは既知だが対処されていないセキュリティホールを突けば
なにかできるかもしれないがやるなよ。
0393nobodyさん2007/07/02(月) 11:34:01ID:???
ありがとうございます!
実行したいスクリプトをsafe_mode_exec_dirに置いて動作確認できました
と思いきやそれ以外でも実行できてしまいました。
俺何か勘違いしてるんでしょうか?

>>392
上島に聞こえてしまいます・・・

#!/usr/lib/php
<html><head><title>シェル実行テスト</title></head><body>

<?php
$str = "cal";
exec($str,$array);
for($i=0;$i<count($array);$i++){
print $array[$i]."<br>";
}
?>

</body></html>
0394nobodyさん2007/07/02(月) 14:01:22ID:???
<form action=$scriptname method=post>でボタンを押されたら
フォームのテキスト等をしょりしていたのですが、
ボタンを押された時に確認ダイアログを出すためにそのボタンに
JavaScriptで確認メッセージをだすようにした場合、同じ処理をさせるにはどうしたらいいのでしょうか?
0395nobodyさん2007/07/02(月) 14:12:14ID:Oa7ZLlfR
$test = get_ary();
で、
$testに
['hoge1']="ホゲ1"
['hoge2']="ホゲ2"
['hoge3']="ホゲ3"
が入るとします。
$test = get_ary();
これで、
$testに['hoge']である「ホゲ1」が入るようにしたいのですが、
$test = get_ary();
$test = $test['hoge1'];
と2行じゃなく
$test = get_ary()->hoge1;
みたいな感じで1行にできないでしょうか?
0396nobodyさん2007/07/02(月) 14:20:25ID:???
>>395
意味わかんねぇし
エスパーじゃないんだからget_ary()でなにしとるかわからんのに
そんなこと出来るわけ無いじゃないか
0397nobodyさん2007/07/02(月) 14:21:33ID:Oa7ZLlfR
>>396
説明が足りませんでした。
$test = get_ary();
で、
$testに
['hoge1']="ホゲ1"
['hoge2']="ホゲ2"
['hoge3']="ホゲ3"
が入るとします。

というのは配列で入るということです。
(returnで配列を返しています。)
0398nobodyさん2007/07/02(月) 14:22:43ID:???
>>394
アラートのOKを押したときにJSでサブミットさせろ
ちなみに場違い!次からはJS関連にいけ
0399nobodyさん2007/07/02(月) 14:30:32ID:???
>>397
だーかーらー
こっちで理解できるのは
function get_ary(){
return array('hoge1'=>"ホゲ1",'hoge2'=>"ホゲ2",'hoge3'=>"ホゲ3");
}
こうなるとしか予測ができんのだ
で、$test = get_ary();したときに
$test["hoge"]に"ほげ1"をいれたいんだろ?
論理的に不可能なわけだ
意味わかるか?
0400nobodyさん2007/07/02(月) 14:33:38ID:Oa7ZLlfR
function get_ary(){
return array('hoge1'=>"ホゲ1",'hoge2'=>"ホゲ2",'hoge3'=>"ホゲ3");
}

$test = get_ary()['hoge1'];

$test = get_ary()->hoge1;

print_r($test);


不可能なのですね、わかりました
0401nobodyさん2007/07/02(月) 14:35:30ID:???
>$testに['hoge']である「ホゲ1」が入るようにしたいのですが、

これはタイプミスかね?

本当は、

>$testに['hoge1']である「ホゲ1」が入るようにしたいのですが、

じゃないんかね?
0402nobodyさん2007/07/02(月) 14:36:54ID:Oa7ZLlfR
>>401
よく見ると打ちミスしていました。
すみません、気づきませんでした。
0403nobodyさん2007/07/02(月) 14:48:38ID:???
こうすれば?

function get_ary( $idx ){
  $array = array('hoge1'=>"ホゲ1",'hoge2'=>"ホゲ2",'hoge3'=>"ホゲ3");
  if( $idx != null ){
    return $array[$idx];
  }else{
    return $array;
  }
}

// 配列くれ
$array = get_ary( null );
// 値くれ
$test = get_ary( 'hoge2' );
0404nobodyさん2007/07/02(月) 14:49:56ID:Oa7ZLlfR
>>403
ありがとうございます。
関数の方を変えてしまえば良いのですね。
解決できましたー。
0405nobodyさん2007/07/02(月) 14:53:15ID:???
>>402
うちみすかよorz
なら
function get_ary($key=""){
if($key==""){
return false;
}
$array = array('hoge1'=>"ホゲ1",'hoge2'=>"ホゲ2",'hoge3'=>"ホゲ3");
return array($key=>$array[$key]);
}
でどうだ
0406nobodyさん2007/07/02(月) 14:54:49ID:???
でおくれたorz
0407nobodyさん2007/07/02(月) 15:41:37ID:???
>>398
どっちに書こうか迷ったんですけどね。
JavaScriptはただダイアログだしてるだけだからこっちのがいいかなっておもったんだけど
やはりダイアログでの処理は向こうで聞くべきでしたか。失礼しました。
乗りかかった船でsubmitを記述を教えてください><
0408nobodyさん2007/07/02(月) 15:45:01ID:???
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を


はいはい
0409nobodyさん2007/07/02(月) 15:47:56ID:???
暇だから誰か質問くれー
0410nobodyさん2007/07/02(月) 15:58:58ID:mwwSeVGN
>>409
PDOとmysqliってどっちがいいですか?
0411nobodyさん2007/07/02(月) 16:11:18ID:???
>>408
ここって定期的にお前みたいな奴が沸くな。
お前ひょっとしてずっと張り付いてそうする隙をみてんの?
キメエ
0412nobodyさん2007/07/02(月) 16:13:52ID:???
Shift_JISで一旦作ったプログラムをUTF-8に置き換えをしています。
ところがある一つのファイルだけ置き換えができない現象が発生。。
そのファイルはHTMLのヘッダとフッタを書き出すインクルード用のファイルなんですけど
PHPとHTMLが混ざり合っているとUTFに変換はできないのでしょうか??
ちなみにEUCには問題なくできました。

以下そのファイルのソース。
頭のPHPの部分を消すと下の方にPHPスクリプトがあっても正常に置換できます。

<?php

function HEADER_HTML( )
{
echo '<?xml version="1.0" encoding="Shift_JIS"?>' . "\n";
?>
<!DOCTYPE 〜〜 以下HTML文
0413nobodyさん2007/07/02(月) 16:15:22ID:???
何で変換してるかくらい書けよ
そこが一番大事だろうが
0414nobodyさん2007/07/02(月) 16:20:07ID:???
普通のテキストエディタで変換してますです。
0415nobodyさん2007/07/02(月) 16:28:58ID:???
PHPエディタですね
0416nobodyさん2007/07/02(月) 16:31:37ID:???
手作業です。
0417nobodyさん2007/07/02(月) 16:32:25ID:???
>>414
メモ帳?
0418nobodyさん2007/07/02(月) 16:35:36ID:???
もうわざと言ってるとしか思えない
0419nobodyさん2007/07/02(月) 16:42:20ID:???
>>417
Windows標準装備のメモ帳ではなくPHPエディタというテキストエディタです。
>>416
数が少ないので一括置換ではなく仰せの通り手作業です。
>>418
原因をご存知なのでしょうか?
0420nobodyさん2007/07/02(月) 16:43:24ID:???
知っているがお前の態度が気に入らない(AA略
0421nobodyさん2007/07/02(月) 16:44:44ID:???
エディタのバグだろ。変換できないなんてありえない。
0422nobodyさん2007/07/02(月) 16:45:12ID:???
>>421
お前の頭のバグだろ
04234122007/07/02(月) 16:47:41ID:???
もういいです!他のところで聞きます!
やっぱり2ちゃんねるで聞くんじゃなかった・・・バカの集まりしかいない
0424nobodyさん2007/07/02(月) 16:49:59ID:Oa7ZLlfR
ごめ、ド忘れ質問お願いします。

function test(){

}

test("aa","bb","cc");

これで、"aa","bb","cc"の部分を配列として受け取れたと思うのですが、
それってclassだけでしょうか?
たしかfunctionでもいけたような気がするのですが。。。
良かったら方法教えてください
(ちなみにtest(array("aa","bb","cc"))を使わない方法でお願いします)
0425nobodyさん2007/07/02(月) 16:52:23ID:???
>>421
TeraPadというエディタで変換を試みたところ、
「Null文字を含むファイルです。Null文字は半角スペースへ変換しました」
と出てきました。
他のファイルではでなかったのでこれが原因のようです。
0426nobodyさん2007/07/02(月) 16:53:32ID:???
>>425
んなわけねーだろwwwwwwwww
0427nobodyさん2007/07/02(月) 16:58:50ID:???
function test( $a, $b, $c ){
  return array( $a, $b, $c );
}
0428nobodyさん2007/07/02(月) 16:58:58ID:???
>>421
先程のエディタでutf-8で新規にファイルを作成し、鯖にアップして確認をしたところ、文字化けもなおって無事ちゃんと表示されました。
普段当たり前のように使ってるツールでもバグがあるかもしれないと疑う事も重要ですね。。
0429nobodyさん2007/07/02(月) 17:00:48ID:???
php関連の技術書籍を検索するとき、PHP研究所の無関係本がやたらリストアップされる。
こういうとき、どうすればマシな検索結果になるんだ。
0430nobodyさん2007/07/02(月) 17:01:59ID:???
>>429
テンプレ読めないやつは自分で探せ
そんなことだがらマシな検索結果が出ないんだ
0431nobodyさん2007/07/02(月) 17:03:54ID:???
PHP 入門 -研究所 -新書 -文庫
0432nobodyさん2007/07/02(月) 17:15:27ID:???
>>424
http://jp.php.net/manual/ja/function.func-get-args.php
これかな
0433nobodyさん2007/07/02(月) 17:25:24ID:???
こんな記述を見つけたけど、意味が分からないので
だれかこれと等価になるやつ教えてください
$mode = ($mode) ? 'a' : 'w';

こんなの初めて見たんだが、、、
0434nobodyさん2007/07/02(月) 17:26:40ID:Oa7ZLlfR
>>432
それですそれです!
まじありがと><
0435nobodyさん2007/07/02(月) 17:28:14ID:???
>>433
それは覚えるとめっちゃ便利

$mode = ($mode) ? 'a' : 'w';

$modeがTRUEなら$modeにaを、FALSEなら$modeにwを代入


$変数 = (条件式) ? TRUEの場合$変数に格納するもの : FALSEの場合$変数に格納するもの;
0436nobodyさん2007/07/02(月) 17:29:19ID:???
>>433
http://jp.php.net/language.operators.comparison#language.operators.comparison.ternary
0437nobodyさん2007/07/02(月) 17:38:33ID:???
>>435-436
うわこれいいな。ありがとう。
0438nobodyさん2007/07/02(月) 17:39:27ID:???
条件演算子は可視性が低いから使うと嫌われるよ
0439nobodyさん2007/07/02(月) 17:41:42ID:???
俺も嫌いだったけどif文のほうが可読性低い場合は多項演算子使ってる
0440nobodyさん2007/07/02(月) 17:47:43ID:???
自分で使う分には問題なくね?
04414382007/07/02(月) 17:49:57ID:???
だな
0442nobodyさん2007/07/02(月) 17:52:01ID:???
俺は仕事で使ってるけど
ぶっちゃけPHPできるのが俺しかいないから自由にやってる
フレームワークも使っていない
(ライブラリとしてよく使うものは保存しているが・・・)
0443nobodyさん2007/07/02(月) 17:55:12ID:???
三項演算子知らなかったなんてあり得ないだろw
0444nobodyさん2007/07/02(月) 17:58:47ID:???
目の前の現実を直視しなさい
04454332007/07/02(月) 18:03:05ID:???
>>438
おぼえとく。
>>443
ごめん織れなんでもない末端ブロガーなんだ。
好奇心で習得しようとしてるけど、まだまだレベル低い。
つかもっとマニュアル嫁織れ。
0446nobodyさん2007/07/02(月) 18:08:20ID:???
<?
$head = "<チラ裏>\n";
$foot = "</チラ裏>\n";

header("Content-Type: text/html; charset=utf8");
?>

<?=$head?>
PHPでExcel形式でxmlを書き出そうとしてるけどパラメータ多すぎ・・・orz
<?=$foot?>
0447nobodyさん2007/07/02(月) 18:11:23ID:4JCJ4+4N
>>438
確かに読むとき一瞬止まるな。
0448nobodyさん2007/07/02(月) 18:25:07ID:???
自分のコーディングスタイルに合わないプログラムがあると、
必死に相手を叩くゆとり。
0449nobodyさん2007/07/02(月) 18:31:59ID:???
必死に叩いているようには見えないが?
0450nobodyさん2007/07/02(月) 19:30:01ID:iLtmkhi3
じゃあ俺も>>738に500ペソ
ID出してやったぞ
0451nobodyさん2007/07/02(月) 19:34:52ID:???
>>455に2000ガバス
0452nobodyさん2007/07/02(月) 19:57:06ID:???
>>555, >>777は確変
04534292007/07/02(月) 22:39:10ID:???
>>431
ありがとう!

>>430
スマンカッタヽ(`Д´)ノ
0454nobodyさん2007/07/02(月) 22:42:00ID:k2nqp5hr
たとえばこのようなページ(https://www.wnz.waseda.jp/syllabus/epj3031.htm)の
各項目をcsvで出力するにはどのようにすればよいのでしょう?
fputcsvを使ってなんやかんやするとは思うのですが。
0455nobodyさん2007/07/02(月) 22:44:41ID:???
>>454
例えばって・・・
少しは自分で考えてみろよ
0456nobodyさん2007/07/02(月) 23:29:51ID:???
phpのソース見ていると、
$a =& hoge();
みたいなのがよくあるんですが、これリファレンスってことでおk?
0457nobodyさん2007/07/03(火) 00:50:43ID:???
うん
0458nobodyさん2007/07/03(火) 01:35:12ID:???
>>457
サンクス
日頃PHP使わないんでちょと?ってなってたよ。

ついでにPHPでいわゆるベストプラクティスの参考になるサイトない?
PEARとか以外で、щ(゚Д゚щ)カモーン!
0459nobodyさん2007/07/03(火) 01:42:00ID:???
>>458
>>1
0460nobodyさん2007/07/03(火) 02:33:45ID:???
>>454
tableなら、table で対象範囲を切り取り、 <tr>で改行(explode) した後<td>でexplodeして配列形式にする
あとはゴミを取っ払って、foreachループでCSV形式に書き出し
0461nobodyさん2007/07/03(火) 02:35:26ID:???
>>460 訂正
</tr> </td>でexplodeした方が楽だね。
■ このスレッドは過去ログ倉庫に格納されています