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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/12/08(月) 01:27:39ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0852nobodyさん2008/12/22(月) 22:34:32ID:???
>>851
>>849
0853nobodyさん2008/12/22(月) 22:36:40ID:UijRZ2Ey
たびたびすみません
$data = <<<MESSAGE
なんたらHTML
MESSAGE

の中に、変数を入れているのが悪いのではと推測しますが、
HTMLのなかに変数を入れる場合、変数を""で囲むのでしょうか?
初心者ですみません
Perlでは囲まないような気が
0854nobodyさん2008/12/22(月) 22:38:16ID:???
>>853
>>849
0855nobodyさん2008/12/22(月) 22:40:02ID:???
エラーメッセージ読んでる?

Parse error: syntax error, unexpected ')', expecting '(' in /〜〜〜〜.php on line 135
'('があるべき場所に予期せぬ')'があります。
0856nobodyさん2008/12/22(月) 22:43:47ID:???
MESSAGE; 最後はこうだろ
0857nobodyさん2008/12/22(月) 22:49:54ID:???
>>855
なにそのエキサイト翻訳みたなの
0858nobodyさん2008/12/22(月) 22:53:14ID:UijRZ2Ey
レスありがとうございます。
MESSAGE; にしていました。

MESSAGEの中に、

<?php
header("content-Type: text/html; charset=sjis");なんたら
?>

これがあるのが悪いみたいです。
これ(<php? ?>)は、どうやって入れたらいいのでしょうか?
外部のテキストデータを読む?
0859nobodyさん2008/12/22(月) 22:54:27ID:???
そのレベルで、スクリプト動的生成とかどうみても危険すぎて笑えるw

0860nobodyさん2008/12/22(月) 22:56:54ID:???
x-sjisかshift_jisじゃない?
0861nobodyさん2008/12/22(月) 22:58:52ID:???
>>860
それ今はどうでもよくね。
0862nobodyさん2008/12/22(月) 23:07:56ID:UijRZ2Ey
原因はこれしかないです。

<?php
header("content-Type: text/html; charset=sjis");
?>

sjis を変えてもダメで、
header("content-Type: text/html; charset=sjis");
のheaderがダメみたいですね。うーん
0863nobodyさん2008/12/22(月) 23:10:14ID:???
>>862
君には才能がないから他の道を行くといい。
0864nobodyさん2008/12/22(月) 23:19:27ID:UijRZ2Ey
"をエスケープしたらいいような気がしましたが。
これでいいでしょうか?
0865nobodyさん2008/12/22(月) 23:22:40ID:???
そんな調子じゃソースさらさない限り前に進まないと思うぞ
そのつもり無いならとっとと失せろ
0866nobodyさん2008/12/22(月) 23:32:40ID:???
人の話を聞かない奴多すぎw
0867nobodyさん2008/12/22(月) 23:35:36ID:???
つまり、こうなってんの?

$data = <<<MESSAGE
<?php
header("content-Type: text/html; charset=sjis");
?>
hogehoge
<b>hogehoge</b>
MESSAGE;
0868nobodyさん2008/12/22(月) 23:36:55ID:F+ur7gRG
久しぶりに来たけどなんでこんなに乱立してるんだ
0869nobodyさん2008/12/22(月) 23:38:53ID:UijRZ2Ey
>>867
そうです。

皆様
いろいろお騒がせしてすみませんでした。
ZIP関数の例文をコピーしてアップしてみたら、
やはり同じところで同じエラーが出るので、
これは、zip関数が使えないということだと思います。

その場合、どうしたらいいのでしょうか。
PEARでできるでしょうか(フォルダ圧縮、透過的書込み)
0870ただの人2008/12/22(月) 23:39:08ID:i5NpGqPt
PHP暦1ヶ月ぐらいです。
最近、PEARを知ったのですがログイン認証機能を設置するのに
Authを使おうか迷っています。

Auth使った失敗談とか教えてくれたらうれしいのですが・・・
0871nobodyさん2008/12/22(月) 23:39:15ID:???
なんだあのコード
あんなの動くのか
0872nobodyさん2008/12/22(月) 23:39:37ID:???
人の話聞かない質問者のひとは egachan か?
うざいから、どっか消えろよw
0873nobodyさん2008/12/22(月) 23:40:50ID:???
>>869
環境は違うが。
<?php
$data = <<<MESSAGE
<?php
header("content-Type: text/html; charset=sjis");
?>
hogehoge
<b>hogehoge</b>
MESSAGE;
echo $data;
?>

エラーなし、hogehoge って出たぞ。
出るエラーメッセージは何よ?
0874nobodyさん2008/12/22(月) 23:49:50ID:i5NpGqPt
\(´・ω・`)\ チョキーン
0875nobodyさん2008/12/22(月) 23:51:32ID:???
もしかして$dataにheaderが入るとか信じてる?
0876nobodyさん2008/12/22(月) 23:51:35ID:???
もちろんZipモジュールインストールしたんだよな?・・・な?
リンク先にちゃんと書いてあるし
08778362008/12/22(月) 23:51:52ID:???
流れぶった切って悪いが、>>836はどんなかんじ?
SJISの関係かしら。
0878nobodyさん2008/12/23(火) 00:00:12ID:59V79J7s
皆様すみません
自鯖ではないので、インストールできません。
やはり、原因はZip関数が使えないのだと思います。
ローカルでは動いていますので。

そういう場合、どうすればいいのでしょうか?
0879nobodyさん2008/12/23(火) 00:02:20ID:???
首釣って氏ぬ
0880nobodyさん2008/12/23(火) 00:08:41ID:???
他人の話を聞かない典型だな
0881nobodyさん2008/12/23(火) 00:11:18ID:???
この板は、基地外と話聞かないアホしか来ないのかw
0882nobodyさん2008/12/23(火) 00:18:06ID:???
釣りだとしたらつまんないし
本気だとしたら本人の頭が改善できないから無理だな。
0883nobodyさん2008/12/23(火) 00:41:06ID:???
よくわからないまま勝手に解決したあとで、釣りでした宣言来そうだなw
0884nobodyさん2008/12/23(火) 01:33:38ID:59V79J7s
すみません、圧縮の件、初心者です。
検索すると、PECLというのは、PEARとちがって
コンパイルする必要があると書いてあります。
それって、自分でレン鯖に入れることできるのでしょうか?
0885nobodyさん2008/12/23(火) 01:42:05ID:VpMBr0l7
php 5.2.3です。

funcA( ABC , DEF );
となっている部分の
ABCとDEFをpreg_matchで取り出すのは簡単ですが、
preg_match( "/.*funcA\s*\(\s*(.+)\s*,\s*([^\)]+)\s*\)/", $xxx, $yyy ) )
でできたのですが、
funcA( funcB( XYZ ) . ABC , DEF );
と入れ子になっていたりすると、
funcB( XYZ ) . ABC
DEF
が取り出せません。
さらに、
funcA( funcB( XYZ ) . ABC ,
               DEF );
などとなっていると、さらに厳しいです。
これを鮮やかに取り出す方法はないでしょうか?
よろしくお願いします。
0886nobodyさん2008/12/23(火) 01:44:29ID:???
>>885
pukiwiki のソースでも読んでろ
0887nobodyさん2008/12/23(火) 02:00:17ID:???
本気でやるなら、適当なlexerなりHTMLとかのパーサーなりの実装例を読むのが近道かもな。
正規表現一発では無理、仮に出来たとしてもかえって難しい。
状態を持つ再帰構造で頑張るか、ツリー型のデータ構造(Interpretorパターン)を自前で実装する必要がある。
0888nobodyさん2008/12/23(火) 02:14:55ID:???
日常五心

「有難う」と言う
 感謝の心


「すみません」と言う
 反省の心


「おかげ様」と言う
 謙虚な心


「私がします」と言う
 奉仕の心


「はい」と言う
 素直な心
0889nobodyさん2008/12/23(火) 02:29:36ID:6F++HAzm
質問です。
md5を使って二重投稿の判定をしようと考えています。
本文が64KBなのですが、
md5($str) で、$strに最大64KBもある文字列を突っこんでも一意の値を返してくれるのでしょうか?

DBより前回の投稿本文を取ってくる = $str1 (最大64KB)
今回の投稿本文 = $str2 (最大64KB)

if(md5($str1) == md5($str2)) {
※同じ値なので二重投稿として判定
}

この方法はあってますでしょうか?
0890nobodyさん2008/12/23(火) 02:40:56ID:???
何十メガのデータでも、すでに公表されてる例以外には、あんまり衝突することないと思うよ。
0891nobodyさん2008/12/23(火) 04:16:18ID:???
md5変換のオーバヘッドの方が文字列の直接比較より大きくないか?
0892nobodyさん2008/12/23(火) 04:16:43ID:???
>>889
MD5 に限らずハッシュ関数ってのは特徴を求めるための関数
一意性を求めるための物じゃないので衝突は絶対に発生する
データベースにデータとそのハッシュ値を保存しておいて、
最初にハッシュ値でざっと比較し、その後精査てな感じで利用される

ちなみに書いてくれた方法だとハッシュ値なんて得ずにそのまま比較するだけでいい
08938892008/12/23(火) 04:27:42ID:6F++HAzm
>>890-892
ありがとうございます。
教えどおり直接比較してみることにします。

ちなみに画像データは
hash_fileで比較しようとしてたのですが、これも直接比較する方法があるのでしょうか?
0894nobodyさん2008/12/23(火) 04:51:43ID:???
バイナリで比較すりゃいいじゃん
0895nobodyさん2008/12/23(火) 05:08:34ID:KPRHaWl+
http://phpc2.seesaa.net/article/50643791.html

ここのページのサンプルの、

<?php

class Food {

private $name;

public getName() {
return $this->name;
}

}


これを実行したらエラーになるんだけど、なんで?
0896nobodyさん2008/12/23(火) 05:13:31ID:???
もう一個下の例なら
0897nobodyさん2008/12/23(火) 05:18:16ID:???
4だからだろ
0898nobodyさん2008/12/23(火) 05:24:10ID:???
>>893
string 型はバイナリセーフなので比較演算子 == が使える
二つのファイルを fread() 等で読み込んで比較するだけ

I/O に掛かる時間は馬鹿にならないから直接比較する機会は減すよう、
それこそハッシュ値やメタ情報(ファイルサイズetc)を活用するといい
0899nobodyさん2008/12/23(火) 05:58:11ID:???
PHPのオブジェクト指向の一番カンタンな例

<?php
class aaa
{
var $bbb="はじめまして";

}
$ccc = new aaa();

echo $ccc->bbb;
?>
0900nobodyさん2008/12/23(火) 06:00:49ID:???
var って必ず無いとダメなのかなぁ?と思って、

<?php
class aaa
{
$bbb="はじめまして";

}
$ccc = new aaa();

echo $ccc->bbb;
?>

って、「var」を削って保存して実行してみた。
結果、問題なく表示される。varいらないジャン?
0901nobodyさん2008/12/23(火) 06:01:46ID:???
それは良かったね
0902nobodyさん2008/12/23(火) 06:02:21ID:???
ごめんvarが無いとエラーになった
まちがえてたごめん
0903nobodyさん2008/12/23(火) 10:51:31ID:gaPLrdeb
CackePHP使ってる人っているんですか?
0904nobodyさん2008/12/23(火) 11:24:31ID:???
>>903
いなきゃ開発なんてされないだろ
0905nobodyさん2008/12/23(火) 11:35:35ID:???
varなんてどうせ使わないから問題ない。
全部privateが基本だからな。
0906nobodyさん2008/12/23(火) 11:37:26ID:???
まだPHP4も現役だぜ?
0907nobodyさん2008/12/23(火) 11:43:13ID:gaPLrdeb
個人サイトで使ってる人って少ないですよね
0908nobodyさん2008/12/23(火) 11:46:09ID:???
4も5も通用するvarを使う以外にありえん
0909nobodyさん2008/12/23(火) 11:51:05ID:???
php4をいつまでも考えてるから世間は移行しない
0910nobodyさん2008/12/23(火) 12:05:33ID:???
何を言ってるんだお前は
0911nobodyさん2008/12/23(火) 12:12:06ID:???
>>907
普通個人サイトつったら簡単な処理にphp入れてるぐらいだからな
例えば背景をランダムで出したり今日の日付出したり
ブラウザで条件分岐したりとjavascriptでできるようなことをやってるのが多い
掲示板などのWebアプリケーションにしても
わざわざ自分で作って運用してるほうが稀
0912nobodyさん2008/12/23(火) 12:27:10ID:???
新しいシステムを作るのにいまさら4はあり得ないだろ。
既存システムの保守/拡張のために使わざるを得ない時にしぶしぶ使うのが4。
まあ、いまだにPHP4のシステムを何の移行計画もなく運用してる所なんてクズ企業だけだろうが。
(移行しない=機能拡張しないor使い捨てる、というのまで計画に含めての話)

>907
Cakeに限らず、フレームワークを個人で利用する意義はかなり薄い。
覚えるまでのコストが高いからな。設置も難しいし。
どっちかっつーと大量のプログラムを作るプロ向け。技術的な難度というよりも、性質上そういうもんなんだよ。
0913nobodyさん2008/12/23(火) 13:14:45ID:gaPLrdeb
>>911
>>912
回答ありがとうございました。 すっきりしました
0914nobodyさん2008/12/23(火) 13:39:36ID:KPRHaWl+
予約語の取り扱いの定義がいまいちアイマイだな

「予約語は、関数の名前として使用できません」
と書いてあるのもあるし、
「使用できますが、混乱を招くのでおすすめできません」
と書いてあるのもあるし。

マニュアルによって、言ってることが違うんだよな。
0915nobodyさん2008/12/23(火) 13:48:02ID:???
後者言ってるページてどれ?
0916nobodyさん2008/12/23(火) 13:53:03ID:KPRHaWl+
http://itbtech.itboost.co.jp/man/php_man/reserved.html

以下にPHPの予約語と定義済みの定数および変
数の一覧を示します。ここに は関数は含まれず、
言語の構造が含まれます。混乱を招くことが確実
である ため、これらの名前を変数、関数、定数、メ
ソッドの名前として使用するべ きではありません。
0917nobodyさん2008/12/23(火) 13:53:41ID:???
どこに使用できるなんて書いてあんの?
0918nobodyさん2008/12/23(火) 14:17:29ID:???
>>914
公式に書いてあることを優先しましょう
0919nobodyさん2008/12/23(火) 15:07:29ID:KPRHaWl+
OOPなんだけど、
newしたら、必ずメソッドを呼び出して
使うというのがノウハウというか、
通常の流れなの?
0920nobodyさん2008/12/23(火) 15:18:51ID:???
"必ず"ではない
0921nobodyさん2008/12/23(火) 15:25:29ID:KPRHaWl+
でも初心者向けのサンプル見ると、
ほとんど全部そういう流れなんだよね。
クラスを定義して、
そのクラスの中でメソッドを定義して、
そんでnewして、メソッドをよびだして、、、て流れ。
0922nobodyさん2008/12/23(火) 15:29:39ID:???
まじでか
0923nobodyさん2008/12/23(火) 15:34:12ID:KPRHaWl+
OOPなんだけど、OOPって、言語によって、主に、

(1)多重継承できるOOPと、
(2)多重継承できないOOPと、

2種類あるようなんだが、この理解であってる?

ちなみにリサーチには5分かけました。
0924nobodyさん2008/12/23(火) 15:38:20ID:???
クイズか?
2元に分けたいかどうかは自由だが、
普通、できるかできないかのどちらかだよな?
0925nobodyさん2008/12/23(火) 15:38:53ID:???
>>923
OOPって何か解って言ってる?
0926nobodyさん2008/12/23(火) 15:40:20ID:???
>>921
初心者用だからでしょ。
0927nobodyさん2008/12/23(火) 15:42:27ID:KPRHaWl+
ちなみに、PHPのOOPは多重継承できないみたいですが、
どう考えても多重継承できた方が便利だと思う夕暮れなのですが、
皆様いかがお過ごしでしょうか。
0928nobodyさん2008/12/23(火) 15:42:36ID:???
暇つぶしに答えてるんだが、もちっとおもろいネタ考えてくれ。
だいたい、テンポ遅い。もうすこしがんばれ
0929nobodyさん2008/12/23(火) 15:43:27ID:KPRHaWl+
すいません、多重継承って言葉の意味がわかってませんでした。
0930nobodyさん2008/12/23(火) 15:44:07ID:KPRHaWl+
「単一継承では,あるクラスのスーパー
クラスは簡単に決まります。直接上のス
ーパークラス,そのスーパークラス,その
またスーパークラス,…と一列に並ぶ単
純な関係です。」


↑これが多重継承だと思ってた
0931nobodyさん2008/12/23(火) 15:44:35ID:???
ルーズに多重継承出来た方が便利という奴と、
多重継承を制約しておいた方がクリーンな実装ができるという奴がいる。
おれは後者、あなたは前者。
0932nobodyさん2008/12/23(火) 15:45:17ID:???
>>930
それは笑えたwアホすぎるw
0933nobodyさん2008/12/23(火) 15:47:22ID:???
多重継承を多用するやつは、interfaceとコンポジッショの使い方がへぼいのな
0934nobodyさん2008/12/23(火) 15:51:33ID:PHOPDLlW
配列に特定の文字があるか調べたいと思います。

$array = array("今日は晴れです");
if(array_search("晴れ",$array)){
echo 1;
}

としたのですが、1が出力されません。
in_arrayだと完全一致になるし、forで配列を1つずつ読み込みながら
確認するのも負荷がかかりそうです。良い方法はないでしょうか?
0935nobodyさん2008/12/23(火) 15:56:06ID:???
> forで配列を1つずつ読み込みながら
> 確認するのも負荷がかかりそうです

負荷の話はやってみてからにしようぜ

array_map preg_match を組み合わせてもいいが一緒
0936nobodyさん2008/12/23(火) 16:00:51ID:???
つ preg_grep
0937nobodyさん2008/12/23(火) 16:01:41ID:KPRHaWl+
そういうときって正規表現使うのが一般的なんじゃないの?
09389342008/12/23(火) 16:01:47ID:???
>>935
「禁止単語の指定」なるものを作っているのですが、
入力項目1つに対して、調査する検索単語分のforが必要になると
負荷がかかると思うのです。実際にやっても少し重くなりました。
0939nobodyさん2008/12/23(火) 16:02:04ID:???
>934
array_searchは「配列の中に"晴れ"が存在するか?」であって、「配列の中の文字列に"晴れ"が存在するか?」じゃないからな。
使うのはarray系のメソッドじゃなくて、文字列検索系のメソッドだ。
お前のやりたい処理は本質的に「配列を1つずつ読み込みながら確認する」事なのだから、コードがそうなるのはむしろ自然。

それと、負荷問題を想像で語るな。
遅くともいいから動くものを作って、それから速度を気にしても遅くない。
0940nobodyさん2008/12/23(火) 16:03:30ID:???
なんか、異次元のソースだな
09419342008/12/23(火) 16:04:59ID:???
>>936
preg_grepで出来ました!ありがとうございます。

>>939
負荷云々は実際にやった上での意見ですから・・。
0942nobodyさん2008/12/23(火) 16:06:04ID:KPRHaWl+
>>938
それって掲示板とかで
「アホ」とか「死ね」とかって書けないようにするとか
そういう処理だよね。だったらやっぱり正規表現じゃないの?

perlのスレだったら2分でコード出してくるよ
0943nobodyさん2008/12/23(火) 16:06:39ID:???
>>935(なぜ、ID出さん?)
それは設計の問題だろ

> 入力項目1つに対して、調査する検索単語分のforが必要になると
> 負荷がかかると思うのです。

検索単語分のforが必要になるとか、どうかしてる
0944nobodyさん2008/12/23(火) 16:07:31ID:???
ああ、目視とはいえ負荷のチェックはやってるのか、失礼。

検索対象が複数あるような状況でpregを使ったら死ぬほど遅くなるから、文字コードを揃えてからstrposないしstr_replace使え。
それ以上の高速化は転置インデックスでも生成するしかないが、よほど大量に処理するのでなければ生成のコストのほうが高い。
何より、コードが読みづらくなる。
0945nobodyさん2008/12/23(火) 16:08:29ID:???
>>934
>>941

おまえ、自分で書いてておかしいと思わないか?
>>934のソース、動かないんだろ。
どうして負荷の計測ができるんだよ
0946nobodyさん2008/12/23(火) 16:09:13ID:???
そうそう、配列を育成するとかいう段階でなんか間違ってると思え
0947nobodyさん2008/12/23(火) 16:11:28ID:???
負荷の話なんて、
プランA、プランBがあって、相対的にどちらが重いから良い方を選択する。

動かないソース提示しといて、負荷計測しましたってなんだよそれ
0948nobodyさん2008/12/23(火) 16:13:51ID:???
次、行ってみよう
0949nobodyさん2008/12/23(火) 16:16:15ID:???
forもおちおち使えない糞マシンっていつの時代の遺物だよw
0950nobodyさん2008/12/23(火) 16:17:42ID:???
ID:KPRHaWl+
の自作自演、お粗末
>>934
>>938
>>942

君レベルで自作自演するときは、ブラウザー分けた方がいいよ。
0951nobodyさん2008/12/23(火) 16:25:18ID:???
ブラウザー(笑)
0952nobodyさん2008/12/23(火) 16:27:12ID:???
環境によってはエラーがディスプレイに出力されないから気付かない人もいるだろうね
レス数が950を超えています。1000を超えると書き込みができなくなります。