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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2007/05/26(土) 21:03:53ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0813nobodyさん2007/06/22(金) 17:48:44ID:???
>>810
どんまい^^
1日18記事書けば、たった10日で元通りさ
0814nobodyさん2007/06/22(金) 17:52:23ID:???
>>812
利用規約に人情はないけど削除担当者に人情はあるだろう。
RAIDが全部同時に飛んだとかなら自己責任だけど
人の意志によって警告もなしに削除はひどいだろ。
0815nobodyさん2007/06/22(金) 18:06:28ID:BcpgaIwJ
あるクラスAに、自分のメンバ変数にアクセスするような動的メソッドMがあります。

そのクラスを継承したクラスBに、上記と同名のメソッドMを再定義します。

クラスBの別メソッドM2には、クラスAのメソッドMのロジックを使いたいです。
このときもちろん$this->M()としてしまってはクラスBのメソッドMを
意味してしまうので使えません。
parent::Mも、Mは動的メソッドなので使えません。
クラスBのメソッドMの中にクラスAのインスタンスを入れ込んで
$A=new A;$A->M();
としても、Mはメンバ変数にアクセスするような関数なので、
$Aのメンバ変数がいじられてしまい、目的は果たせません。

どのようにして、クラスBからクラスAの動的メソッドMにアクセスすべきでしょうか。
0816nobodyさん2007/06/22(金) 18:08:39ID:BcpgaIwJ
9行目
誤:「クラスBのメソッドMの中に」
正:「クラスBのメソッドM2の中に」ですすみません。
0817nobodyさん2007/06/22(金) 18:14:02ID:???
ぱっと読んだ限りparentでいけると思うが
動的メソッドってどういう意味合いで言ってるのか意味不明
わかりにくいから具体的にコード張って
ここが動かないってのを示せ
08188152007/06/22(金) 18:25:08ID:BcpgaIwJ
class tag{//上でいうクラスAのこと
private $contents=array();//上でいう「メンバ変数」のこと
public function addcontent($content,$strictly=false){//上でいうメソッドMのこと
$result=$this->checkcontent($content,$strictly);
if($result){$this->contents[]=$result;}
}
}
class htmlpage extends tag{//上でいうクラスBのこと
private $body;//bodyはtagクラスのインスタンス。
public function addcontent($content,$strictly=false){//上でいうメソッドM
$this->body->addcontent($content,$strictly);}
}
private function preRenderProcess(){
★$this->addcontent($body);//ここ。本当は親クラスのaddcontentを使いたい。
}
タグを入れ子にできるクラス群。HTMLページクラスにaddcontentすると、
HTML内ではなくその中のBODYタグ内にcontentが記述されるようにこのような
構造にした。だがHTMLタグ内にBODYタグを入れたい。
08198182007/06/22(金) 18:28:18ID:BcpgaIwJ
何度も間違いすぎごめん。
誤:★$this->addcontent($body);
正:★$this->addcontent($this->body);
0820nobodyさん2007/06/22(金) 18:37:59ID:???
parent::addcontent()でいけないか?
0821nobodyさん2007/06/22(金) 18:40:04ID:???
>>814
人情を持ち出したところで、消されるようなことをしてるやつは
運営側からするとむかつく奴だろうから、なおのこと警告なんてしないだろ。
08228182007/06/22(金) 18:47:42ID:BcpgaIwJ
うーん、とりあえずparent::addcontent($this->body);したあと
var_dump($this->getcontents());でやるとarray()になる。
vaar_dump($this->body->getcontents());をすると
たくさんコンテンツが入っているのだが…。
0823nobodyさん2007/06/22(金) 18:57:48ID:???
オブジェクト入れてるだけ。

$gov = get_object_vars($this->body);
$this->addcontent($gov);
08248182007/06/22(金) 19:05:55ID:BcpgaIwJ
でも$this->addcontent()はクラスBのものが使われるから
$govは再び$this->bodyの中に入っていくのでは??
0825nobodyさん2007/06/22(金) 19:16:39ID:???
ていうかもう貼ってないメソッドとか出てきてるし
上層の呼び出し側でどういう風にやってるのかわからないし
parentで呼び出した時にcheckcontentはちゃんと
result返してるのかわからないし
さすがの俺もおまえが書いてるソースを
透視する能力はないんでここでデバッグされても困る
0826nobodyさん2007/06/22(金) 19:24:07ID:???
改行コード(\rや\nなど)を\r\nに統一したいのですが、下記の正規表現では改行文字の前の文字が1文字消えてしまいます。
preg_replace("/([^\r]\n|\r[^\n])/", "\r\n", $str);

正しく変換するためにはどうしたらいいでしょうか?
0827nobodyさん2007/06/22(金) 20:30:44ID:???
str_replace(array("\r\n", "\r", "\n"), "\r\n", $str);
0828nobodyさん2007/06/22(金) 20:34:42ID:???
それで出来ると考えていた時期が俺にもありました
08298272007/06/22(金) 20:44:01ID:???
ほんとだ・・出来てないww

$str = preg_replace("/\r\n|\r|\n/", "\r\n", $str);
こっちなら大丈夫だった。
0830nobodyさん2007/06/22(金) 21:03:48ID:???
それはだめだろう
0831nobodyさん2007/06/22(金) 21:11:23ID:???
$str = str_replace("\r\n","\r",$str):
$str = str_replace("\n","\r",$str):
$str = str_replace("\r","\r\n",$str):

記述がスマートじゃないけど、遅くはならないと思う。
0832nobodyさん2007/06/22(金) 22:03:20ID:???
HTMLファイルをincludeやrequireで読み込む際、行頭にタブを任意の個数付加したいのですが
どのような方法がスマートでしょうか?
0833nobodyさん2007/06/22(金) 22:10:55ID:???
>>831
strtr使って書くと見た目は随分スマートになる。
0834nobodyさん2007/06/22(金) 22:50:34ID:???
すいません。
pg_ prepareのプレスフォルダにnullを入れたい場合はどうすれば良いでしょうかか。。
0835nobodyさん2007/06/22(金) 23:16:34ID:???
$str = preg_replace("/(?<!\r)\n|\r(?!\n)/", "\r\n", $str);
0836nobodyさん2007/06/22(金) 23:38:57ID:???
>>832
func html_include($file) {
echo " ";
include($file);
}
0837nobodyさん2007/06/22(金) 23:41:32ID:???
>>834
そのまま null を入れたらいいんじゃないの
試してみた?
0838nobodyさん2007/06/23(土) 00:56:03ID:???
where句の場合は無理じゃなかたけ
08397892007/06/23(土) 02:11:32ID:2hjTlCBK
>>795
遅くなりましたけどレスありがとうございます。

シェルスクリプトのがイマイチ良くわかってないので
もっと、いや、せめてもうちょっと^^;
勉強します。

ざっと見た感じ 受信したメールをテキストに保存してるみたいですね。(違ったらすいません)

dot-qmail(特定のメールを受信したときにスクリプトを起動したり、転送したりできる機能)
で、メールをユーザーdirに保存後、phpを起動してそのファイルを読みに行くって言うのも考えたのですが
タイムラグで、メールをPHPが読めないなんてコトがあるのかどうか心配です。

それがあり得ないのであれば、この方法が一番良いかな、と思ってます。

もしその方法が信頼性が低いならphpに一行ずつメールを渡して、それをテキストに保存(又はシェルスクリプトで保存)。
>phpで解析が良いのかな。
標準入力を改行も含めて一気に渡すコトってできませんよね?
まあ、とにかくシェルスクリプトの問題っぽいですね。

しかし、WEBでもちょっとしたシステムを作るって言うのは、本当に多岐にわたった知識が必要ですよね。
大きくて技術力のある人が多い会社は、無用な労力なんだろうか?
うちでは質問できるのは、君たちだけだよ・・・いつもすんませんね。
0840nobodyさん2007/06/23(土) 02:52:08ID:???
>>827-828
やべーw俺もだ
0841nobodyさん2007/06/23(土) 03:07:26ID:???
>>839
>811が見えないのか?
0842nobodyさん2007/06/23(土) 04:05:37ID:???
>>841
見えてて書いてる理由もわからないのか?
あんたバカとちゃうん?
0843nobodyさん2007/06/23(土) 04:15:12ID:???
標準入力が何なのかわからないんだとおも
0844nobodyさん2007/06/23(土) 06:20:47ID:M3Ri6nNm
$arry=fgetcsv($file,1000,",")
$dcsv[] = $arry;

のとき$dcsvの配列はどうやって参照すればいいですか?
0845nobodyさん2007/06/23(土) 07:18:45ID:???
>>844
エスパー的な回答

while(!feof($file)){
$arry=fgetcsv($file,1000,",");
$dcsv[]=$arry;
}
とすればきっとあなたの思い通りになるのではないでしょうか。
ただし$fileはファイルポインタですよ。
0846nobodyさん2007/06/23(土) 08:07:44ID:???
>>839
上記の場合は、
マルチドメイン(virtualメールアドレス)でどうしても運用したかったため、postfixの絡みもあってあんな風になってます。

んで、マルチドメインが必要ないならば素直な方法(先にこっち書けよ・・すまん)として以下のような
オーソドックスなやり方があります。 (受付専用ユーザhogeを作る必要有り)

1) /etc/alias 内に hoge: "|/usr/local/bin/fuga.php を書く
2) newaliases を実行して1)を有効に んで、hogeユーザへのメールは、fuga.phpに渡る。

fuga.php内で、
$fp = fopen("php://stdin", "r");
while (!feof($fp)) {
$buf = fgets($fp,256);
$all .= $buf;
}
fclose($fp); で、ストリームを読み込む んで、あとはパースする
$arr = explode("\n", $all);
$boundary = "";
$msg_id = "";
foreach ($arr as $line) {
$line = trim($line);// boundary 取得
if(!$boundary){
if (preg_match('/boundary="(.*?)"/i', $line, $match)) { $boundary = $match[1]; }
}
if (!$msg_id){// message-id 取得
if (preg_match('/Message-Id: <(.*?)>/i', $line, $match)) { $msg_id = $match[1]; }
}
if ($boundary && $msg_id) break;
}
みたいな感じ、$arrをグルグルやって読み込む。 同じ要領で、いけるんじゃないか?
0847nobodyさん2007/06/23(土) 08:22:31ID:???
>>846
/etc/alias は
hoge: "|/usr/local/bin/fuga.php" だクォート抜けてた
0848nobodyさん2007/06/23(土) 12:08:34ID:cbRsCM6u
aaa.incファイルをbbb.phpファイルで呼び出す(インクルード)方法と
aaa.phpファイルをbbb.phpファイルで呼び出す方法

どう違うんですか?
0849nobodyさん2007/06/23(土) 12:15:06ID:M3Ri6nNm
>>845神がかった回答ありがとうございました。
//ソート関数の定義
function cmp($a, $b){
return strcmp($a[7], $b[7]);//バイナリでも使える文字列比較
}
usort($dcsv, "cmp");
usortで上の関数を呼び出すと文字列比較になってしまうのですが数字比較を
するには何の関数を使えば良いでしょうか?
たびたびくだらない質問をして申し訳ございませんがよろしくお願いします。
0850nobodyさん2007/06/23(土) 12:19:12ID:???
>>849
usortのマニュアルくらい見れ
0851nobodyさん2007/06/23(土) 12:25:25ID:C481f9GD
<?php
$url = 'http://www.example.com';
print_r(get_headers($url));
?>

にタイムアウトを設定したいのですが
具体的にどこに何を書けばいいのかわかりません
くだらない質問をして申し訳ないですがご教授お願いいたします
0852nobodyさん2007/06/23(土) 12:37:46ID:???
>>851
ソースの上の方に↓の一行を追加すればOK

ini_set('default_socket_timeout', 10);
0853nobodyさん2007/06/23(土) 12:45:29ID:???
>>852
本当にありがとうございます、助かりました。
08548492007/06/23(土) 12:56:38ID:M3Ri6nNm
//ソート関数の定義
function cmp($a, $b){
if ($a == $b) return 0;
return ($a[7] > $b[7]) ? -1 : 1;
}
頑張ってソートの中身を変えて見ましたが出力結果は
497
391
10711
となってしまいます orz
0855nobodyさん2007/06/23(土) 14:46:10ID:C481f9GD
度々すみません

<?php
ini_set('default_socket_timeout', 10);
$url = 'http://www.example.com';
print_r(get_headers($url));
?>

に関してなのですが、ユーザーエージェントを特定のものにして
情報を受け取る方法を探していたのですが見つかりません

ユーザーエージェントを指定するにはこの場合
具体的にどこに何を書けばいいのかわかりません
度々質問をしてすみません、ご教授お願いいたします
0856nobodyさん2007/06/23(土) 14:51:23ID:???
>>855
ini_set("user_agent","xxxxx");
0857nobodyさん2007/06/23(土) 14:53:25ID:???
>>856
本当にすみません、ありがとうございます
08588392007/06/23(土) 16:52:33ID:2hjTlCBK
>>846
いや、まじ助かります。ありがとう〜

キモはphp://stdinでした。
知りませんでした。
0859nobodyさん2007/06/23(土) 17:47:47ID:???
>>303
動いてしまいました^^;
return;を関数を定義してる方に入れたのですが間違ってますか?
0860nobodyさん2007/06/23(土) 18:47:34ID:???
842 = 858?
気になってしまた
08618342007/06/23(土) 19:24:15ID:???
>>837
>>838
レス遅くなってすみません。
プレスフォルダに入れる値の配列を配列ごと何の考えも無しに文字コード変換してんですが、どうもその際にnullが空文字に変換されてinteger型のカラム等で弾かれてた見たいです。
お手数おかけしました。。
0862nobodyさん2007/06/23(土) 20:23:13ID:???
ファイル操作でテキストファイルに先頭から追記していきたいんだけどどうすればいいかな
0863nobodyさん2007/06/23(土) 20:36:08ID:???
>>862
よく分からないんだけど、ファイル名を追記するってこと?ファイルの中身を追記するってこと?
0864nobodyさん2007/06/23(土) 20:46:15ID:???
>>862
$fp=fopen($filename,"a");
でファイルポインタはファイルの終端に来るので、
そっからfwrite($fp,$str);
0865nobodyさん2007/06/23(土) 20:54:39ID:???
それ終端から追記じゃね?
0866nobodyさん2007/06/23(土) 21:05:55ID:???
>>863
中身

aaa

bbb
aaa

ccc
bbb
aaa

こういうふうににしたいんだけど・・・わかりにくくてすいません
0867nobodyさん2007/06/23(土) 21:10:16ID:???
>>864
終端から追記じゃなくて先頭から追記です。すいません
0868nobodyさん2007/06/23(土) 21:10:18ID:???
$str = file_get_contents("hoge.txt");
$buf = "bbb\n";
$buf .= $str;

$fp = fopen("hoge.txt", "w");
 fwrite($fp, "buf\n");
fclose($fp);

行数が決まってるならfileとかで読み込んでループでいいんじゃないかな
08698682007/06/23(土) 21:11:38ID:???
訂正

$str = file_get_contents("hoge.txt");
$buf = "bbb\n";
$buf .= $str;

$fp = fopen("hoge.txt", "w");
 fwrite($fp, $buf);
fclose($fp);
0870nobodyさん2007/06/23(土) 21:16:10ID:???
>>868
一度ファイルの中身を全部取り出しちゃうんですね。
それでいけそうです。ありがとうございました
0871nobodyさん2007/06/23(土) 23:08:52ID:???
フォームでフリガナの入力欄作ったんだけど
これの入力値がフリガナだけか調べるうまい方法おしえて
文字オードはUTF-8です
0872nobodyさん2007/06/24(日) 00:03:34ID:???
JAVAのスレで効いても、全然解答が無かったので、
こちらで効かせてもらいます。
0873nobodyさん2007/06/24(日) 02:44:08ID:???
/^(\xe3(\x82|\x83)[\x80-\xbf])*$/
08748712007/06/24(日) 06:41:14ID:???
すみません間違いました。
文字コードEUC-JPでお願いします。
0875nobodyさん2007/06/24(日) 07:28:41ID:???
シネ
0876nobodyさん2007/06/24(日) 11:51:09ID:???
テキストファイルに追記していった文字列が10行を超えたら5行以下を削除するってできないかな
0877nobodyさん2007/06/24(日) 11:57:42ID:???
できるんじゃね?
0878nobodyさん2007/06/24(日) 11:59:37ID:???
できるよ
0879nobodyさん2007/06/24(日) 12:58:34ID:???
どうやるんだろ
0880nobodyさん2007/06/24(日) 13:13:55ID:???
こうやるんだよ
0881nobodyさん2007/06/24(日) 13:19:36ID:???
何でもかんでも人に聞くな!


俺がそれできるようになるまで何日かかったと思ってるんだ!知らんと思うけど!!
0882nobodyさん2007/06/24(日) 13:57:05ID:RCivN73v
>>881の気持ちは判る
0883nobodyさん2007/06/24(日) 14:00:43ID:???
いつも楽しく拝見させて頂いております南場弘子です。
大変勉強になることばかりで、私の生活の糧になっています。
ところで、このスレはどうしてこんなにキモイ変態ばかりが群がっているのでしょうか?
0884nobodyさん2007/06/24(日) 14:01:08ID:???
文字列を扱うのは面倒くさい
0885nobodyさん2007/06/24(日) 14:58:47ID:???
>>884
なんで?文字列も整数も配列もオブジェクトも大して変わらんと思うが
0886nobodyさん2007/06/24(日) 16:59:44ID:j/kNbMoH

HTMLのTEXTAREA内にTEXTAREAのタグを読み込めないのですが、
どうすれば読み込めますかね?
0887nobodyさん2007/06/24(日) 17:59:21ID:???
何のために?
0888先ほど質問した者ですが2007/06/24(日) 18:08:38ID:j/kNbMoH
php内で
header省略
$body = file_get_contents("./index.html)
print <<<_EOT_
<form action="">
<textarea>
$body
</textarea>
</form>
_EOT_;
0889nobodyさん2007/06/24(日) 18:10:43ID:???
ごめん、何が言いたいのかがさっぱりわからん
0890nobodyさん2007/06/24(日) 18:11:31ID:???
>>88
phpじゃなくてhtmlの問題
08918902007/06/24(日) 18:12:13ID:???
×>>88→○>>888
0892nobodyさん2007/06/24(日) 18:17:29ID:???
>>888
それが何なんだよ。
0893nobodyさん2007/06/24(日) 18:34:49ID:RCivN73v
$body = htmlspecialchars(file_get_contents("./index.html));
0894先ほど質問した者ですが2007/06/24(日) 18:48:36ID:j/kNbMoH
>>893
なるほど、HTMLを実体参照にするのですね。
誠にありがとうございます。
では
0895nobodyさん2007/06/24(日) 18:55:33ID:???
>>894
他の人たちはスルーか死ね
0896nobodyさん2007/06/24(日) 19:23:44ID:???
>>895
あなたが死んでください。このクズ。
0897先ほど質問した者ですが2007/06/24(日) 19:25:21ID:j/kNbMoH
>>895
具体的な解を下さったのは>>893様です。
死ねなどという幼稚な発言はやめたらどうですか?
PHPどうたらの前に人間性ですよ。
0898nobodyさん2007/06/24(日) 19:29:19ID:???
>>897
貴方が幼稚な質問をしたから罵られているのですよ・・・
考えて見ても下さい、理由無く叩かれる質問なんて極僅かですよ
0899nobodyさん2007/06/24(日) 19:33:34ID:???
最近は言葉遣いだけ丁寧にすれば礼儀正しい人間になれると勘違いしている奴が多くて困る
0900nobodyさん2007/06/24(日) 19:43:07ID:j/kNbMoH
>>898
幼稚=下らない
ならば
スレタイ通りの質問をしたまでですが?
そんな事言われても困りますね。
>>899
あなたにとって丁寧な言葉遣い以外に何が必要か教えて下さい。
0901nobodyさん2007/06/24(日) 19:45:43ID:???
お前ら、そう言いつつもID:j/kNbMoHが可愛いおにゃのこだったら許せちゃうんだろ?
俺なら許す。
0902nobodyさん2007/06/24(日) 19:53:20ID:???
巨乳じゃなきゃいやだい
0903nobodyさん2007/06/24(日) 19:58:06ID:???
>>900
ヒント:ここはPHPの質問スレであって、HTMLの基礎について質問するスレではない
<textarea>の中にそのままページ丸ごと読み込みなんて、HTMLの基礎知識が有ればやらない

言葉使いが人格のメインだなんて思ってるのか?
君がやってるのは敬語を使いながら相手の靴に唾を吐きかけるような行為だよ
口先ばかりで行動が伴っていない
0904nobodyさん2007/06/24(日) 20:28:45ID:RCivN73v
新しき手法はいつの世も叩かれる
0905nobodyさん2007/06/24(日) 20:39:40ID:???
>>900
PHP初心者のお前のために解決方法を考えて労力と時間を費やしてくれた人がいるというのに
それに対して一言も謝辞がなく、具体的な解でなかったから価値がないように言い放つ奴は
どう考えても人間性が最悪な奴だと思うがどうかね?
0906nobodyさん2007/06/24(日) 20:45:16ID:???
>>905
人に死ね言い放つ奴はどうなんですか?
0907nobodyさん2007/06/24(日) 20:51:14ID:???
>>905 じゃあ、最初から何もしなければいいんじゃない?
誰かが任意で答えればいいだけだし。

答えたい奴が勝手に答える ってスタンスに変えればいいのに。
0908nobodyさん2007/06/24(日) 20:57:40ID:RborMjIR
おまえらめんどくせーな
0909nobodyさん2007/06/24(日) 21:04:10ID:???
>>906
死ねって言った奴以外はどうなんだよ
0910nobodyさん2007/06/24(日) 21:06:32ID:???
>>909 どうにもなりません。諦めて><
0911nobodyさん2007/06/24(日) 21:07:54ID:???
こうなったら、ここの住民だけで乱交パーティーでもやって何もかも忘れないか?
0912nobodyさん2007/06/24(日) 21:09:00ID:???
>>911 Good idea!!
レス数が900を超えています。1000を超えると表示できなくなるよ。