【PHP】下らねぇ質問はここに書き込みやがれ 28
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/03(日) 21:01:08ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0422かむかむ
2006/09/09(土) 15:03:38ID:WZEde27eもっと効率的な方法ありますでしょうか?
class Globals {
public $user = array();
//POST
function Post($element) {
if(!is_array($element)) {
$this->user[$elsement] = htmlout($_POST[$elsement]);
} else {
foreach($element as $element=>$key) {
$this->user[$elsement][$key] = htmlout($_POST[$elsement][$key]);
}
}
}
//GET
function Get($element) {
if(!is_array($element)) {
$this->user[$elsement] = htmlout($_GET[$elsement]);
} else {
foreach($element as $element=>$key) {
$this->user[$elsement][$key] = htmlout($_GET[$elsement][$key]);
}
}
}
0424かむかむ
2006/09/09(土) 15:22:41ID:WZEde27e返レスありがとうございまする!
基本的に分かりやすいのがベストだと思っているんでこんなクラス名・メソッド名にしました(`□′)b
$global = new Globals;
$global->Post('text');
$global->Get('hoge');
こんな感じでインスタンスしてますが、できればGET,POST関係なくとれれば(内部で対応)できればと考えてます
$global = new Globals;
$global->_GP('text');
$global->_GP('hoge');
0425420
2006/09/09(土) 15:24:18ID:bt/VDzRMありがとうございます。やはりそうですかね。できれば、テーブル構造の変化も予想されるので、直接SQLを記述する方法は取りたくなのです。
query();使う以外に方法はないものでしょうか。
0426nobodyさん
2006/09/09(土) 15:40:56ID:???フォームからの書き込みをphpで処理し
xmlとして出力するものを作っています。
Operaで全角文字を書き込むと、
一部の文字が勝手に実体参照に変換され送られています。
(たとえば「〜」が「?」に)。
このため、文面の一部としてフォームに書き込まれた「&」を「&」に変換する際、
既に実体参照に変換された全角文字の先頭の「&」までもが
更に「&」に変換されてしまい、ぐちゃぐちゃになってしまいます。
Firefoxではこうしたことは起きないようです。
どなかたうまい解決法を教えてくださいませんか。お願いします。
0428nobodyさん
2006/09/09(土) 15:48:31ID:???「&」を「&」に変換する際、
更に「&」に変換されてしまい、
です。すいません。
0429428
2006/09/09(土) 16:10:49ID:WZEde27e0430nobodyさん
2006/09/09(土) 16:15:29ID:???そういうのをクラスにするのは、ただの無駄だと思うけど。
どうしてもGET, POSTを統一したければ
$var = (getenv("REQUEST_METHOD") == 'GET') ? $_GET : $_POST;
こんなんで、十分では。
0431426
2006/09/09(土) 16:16:40ID:???やっぱり実体参照を全部実体に変換して、
その上で再度実体参照に変換するしかないですよね。
0432nobodyさん
2006/09/09(土) 16:59:51ID:???ちょ、おまw
こんなことができなくなるよ。
<form method="post" action="example.php?foo=getdata">
<input name="foo" type="text" value="postdata">
</form>
0433nobodyさん
2006/09/09(土) 17:11:07ID:???0434nobodyさん
2006/09/09(土) 17:41:53ID:???0438nobodyさん
2006/09/09(土) 20:19:18ID:???0439nobodyさん
2006/09/09(土) 20:22:38ID:???仮に出来たとしてもやるべきではないわな。
POSTなのにわざわざURL引数としてパラメータ指定する意味がわからん。
0441nobodyさん
2006/09/09(土) 21:51:01ID:???いや、GETとPOSTの組み合わせは問題ないと思うけど
Firefox、Opera、IE、Safari、au W31CA、DoCoMo So505is、Lynx で問題無かったし、
W3C のHTMLチェックと、HTML-lint のチェックも通ったよ
それに、HTMLの仕様をざっと読んだ限りでは問題点は発見できなかった
見落としているかもしれないが…
0443初心者ですいません
2006/09/09(土) 23:05:47ID:7mfku9TF<?php include("○○○.php"); ?>
これは外部からphpを呼び込めますが。
これを拡張子がHTMLでも呼び出したいのですが
方法とかあるのでしょうか?
拡張子がphpの場合は、うまいことよびだされるのですがhtmlにすると
エラーがでて無理です。
.htaccessとうでやり方がありましたら教えて下さい m(_ _"m)
0445nobodyさん
2006/09/09(土) 23:15:12ID:???やっときちんとID出してる質問者さんが・・
読み込んだHTMLがPHPとして問題があるからエラー出てるのかな
0446nobodyさん
2006/09/09(土) 23:22:40ID:???HTTP的には「POSTメソッドのリクエスト先URLがexample.php?foo=data」
となっているというだけ。というのがより正しいような気がする。
で、本題だけど、少なくとも
<form method="post" action="example.php?foo=data">
<input name="hoge" type="text" value="postdata">
なんていうのは多くのサイトでやってることだよね?
でできる?できない?と意見が割れてるのは
<form method="post" action="example.php?foo=data">
<input name="foo" type="text" value="postdata">
と同じ名称(foo)を指定した場合のことですよね?
ちょっと読んでて気になったのでまとめてみたずらー
0447nobodyさん
2006/09/09(土) 23:25:10ID:???そのHTMLファイルの拡張子をPHPに変えるというのも一つの手だな
じゃあ俺はちょっくらラーメン食べに言ってくる
0449nobodyさん
2006/09/09(土) 23:26:49ID:???<?php include("○○○.php"); ?>
が書かれているものの拡張子をhtmlにしたいの?
それとも、
<?php include("○○○.html"); ?>
にしたいの?
前者なら、
AddType application/x-httpd-php .html
後者なら常に可能なはず。
動かないのであればエラーが出ているはず。
error_reportingとdisplay_errorsを適切に設定してみて。
0451nobodyさん
2006/09/09(土) 23:28:59ID:???0452441
2006/09/09(土) 23:29:12ID:???あ、なるほど
両方 name が "foo" だったのね
それは気がつかなかった
ちなみに、この場合だけど、リクエストURIと、POSTデータは別物なので、
両方とも同じ名称を用いてもHTTP/HTMLの仕様上問題は生じないはず
Webプログラミング言語がどうなってるかは知らないが php5 では少なくとも
問題は生じてないみたい
0454nobodyさん
2006/09/09(土) 23:38:37ID:???違います。パラメータ名の重複とか関係なく
FOMAではPOSTメソッドでactionに?〜を付けても無視される。
0455nobodyさん
2006/09/09(土) 23:41:54ID:???簡単に文字列に変換する方法はないでしょうか?
(string)で型変換してみましたが、変わりませんでした。
現在はimplodeでやっていますが、もう少し簡単にできる方法があればご教示お願いします。
0456初心者ですいません
2006/09/09(土) 23:47:59ID:7mfku9TF>>447-448
>>449
ありがとうございます m(_ _"m)ペコリ
>>449さんの前者のたとえが正解です。
大変参考になり助かりました!
検索をして勉強もかねてそのようにしたいと思います。
本当にありがとうございました。
ここできいてよかったです!
0457かむかむ
2006/09/09(土) 23:51:23ID:WZEde27e返レス有難うございまする!
では
$_POST['hoge']
$_GET['hoge']
でとるしかないのでしょうか?
0458nobodyさん
2006/09/09(土) 23:51:48ID:???どうでもいいけど、それでブラウザ依存とか言われたら困るんだけど
あくまでも 「FOMA の欠陥」 だから。
だいたい、メールアドレス の @ の前に "." を使えるようにして、それを RFC準拠だと主張したりするのがドコモだからね
Microsoft のメールサーバにも拒否されるまぬけなアドレス
勿論、Unixの多くのMTAでもこんな仕様違反のメルアドは使えないから不着トラブルも多発
0460nobodyさん
2006/09/10(日) 00:04:22ID:???最近、他のキャリアもDocomoの真似するようになってきて大迷惑だよね。
あんなメールアドレス通すなよなー。
0461nobodyさん
2006/09/10(日) 00:24:00ID:yhAV7xHo相対パス(例: ../hoge/foobar.html)を計算して、絶対URL(この例だと「http://example.com/hoge/foobar.html」)を求める
にはどうすればよいでしょう?
そのような関数が無ければ、自分で定義するしかありませんが、もしそうなら
正規表現であーだこーだやって絶対URLに変換するしかありませんよね?
0462かむかむ
2006/09/10(日) 01:03:50ID:IiyA9HmKそれだと配列にするのが手間なんですよね
0463かむかむ
2006/09/10(日) 01:06:43ID:IiyA9HmK絶対urlを相対パスにしてそれから絶対urlを求めるって支離滅裂じゃないかな?
0464nobodyさん
2006/09/10(日) 01:31:31ID:???うげ〜
そんなこっちゃ、多くのWebサイトは
FOMAからは正常にPOSTできないという
トラブル続発ってことですよね。
FOMAって市場に出てから結構経ってるのにねぇ〜
っていうかFOMAのブラウザが悪いのか?
あ、すれ違いな話題になってきたのですが、
興味あるので、ググルキーワードだけでも
おしえてもらえませんか?<(_ _)>
FOMA GET POST あたりでトライしてみたのですが
見つからなかったので
0466nobodyさん
2006/09/10(日) 01:33:43ID:ofHvlQB30468nobodyさん
2006/09/10(日) 01:37:48ID:ofHvlQB3別に詐欺とかそういう黒いことに使うつもりはありません。
ネットワークソフトの解説でわかりやすくするために使いたいのですが
教えていただけないでしょうか?
0469nobodyさん
2006/09/10(日) 01:38:27ID:NtN9U8j4if($a < -5) {
マイナス5よりも小さければ何々みたいな
0472nobodyさん
2006/09/10(日) 01:44:07ID:???ある、がここはプログラムをする人のスレなのですれ違い
移動してください
>>469
試せばすぐ分かります。
上と同じなのでプログラムする気が無ければ別のスレへ行ってください。
やって出来なかったのであればソースを提示してください。
0473nobodyさん
2006/09/10(日) 01:45:47ID:???試したけど出来なかったんです
でも今、最小値を一番頭にもってきたら出来ました
並び順なんて関係あるの
0474nobodyさん
2006/09/10(日) 01:54:30ID:???名前:772[] 投稿日:2006/04/07(金) 19:27:39 ID:jJE5oi/7
772?で公開した?URI?の?validation?システムをバージョンアップしました。
相対?URI?も解釈可能です。
【設置場所】?http://trashtoy.dw.land.to/app/uri/?
【ソース】?http://trashtoy.dw.land.to/app/uri/uri.zip?
【プログラミング経験】 3年?
【希望評価スタイル】 重箱の隅をつっつくような細かい指摘もどしどしお願いします。?
【自分の性格】 アーキテクチャにとことんこだわるタイプ。納期を守るのはたぶん苦手。?
【実行例】
http://trashtoy.dw.land.to/app/uri/?uri=../section/1.html#TOC&base=http://example.com/sitemap/index.html
http://trashtoy.dw.land.to/app/uri/?uri=file:///C:/Program%20Files/Internet%20Explorer
http://trashtoy.dw.land.to/app/uri/?uri=mailto:this_is_a_test@example.com
【備考】 花見をもっと楽しみたかった。
参考になればいいね
0477nobodyさん
2006/09/10(日) 02:19:49ID:???if($s[1] < -5){
$pu = "ぎゃああああああああああああああああ";
} elseif($s[1] < 0){
$pu = "フーン";
} elseif($s[1] > 10){
$pu = "うはwwwwwおkwwwwwwwwwwwwwwwww
} elseif($s[1] > 3){
$pu = "よっしゃああああああああああああ";
} else {
$pu = "おっおっおっ";
}
並び変えるとダメみたいなんですが。
0478nobodyさん
2006/09/10(日) 02:23:13ID:???並び替えた内容も見ないと断定はできないけど、
多分 if($s[1] < 0) を前に置いたんだろ?
-5より小さい値なら当然0よりも小さいわけだから
まずそっちに該当しちゃうだろ。
もうちょっと論理的に物事を考えないとプログラマにはなれないよ。
0479nobodyさん
2006/09/10(日) 02:30:01ID:???0480nobodyさん
2006/09/10(日) 02:38:46ID:???0481nobodyさん
2006/09/10(日) 02:39:37ID:???勘違いしてるかもだけど、
if(条件A) {
} elseif(条件B) {
}
ってのは条件AとBをいっぺんに調べてくれるものじゃなくて、
まずAを調べてそれに該当しない場合のみBを調べるもの。
Aに該当してしまったらBはもう調べてくれない。
0482nobodyさん
2006/09/10(日) 02:41:28ID:???0483nobodyさん
2006/09/10(日) 02:42:27ID:???ソースをちゃんと晒すところが良いね。
ソースも出さずに分からない!って奴が多すぎる
0486nobodyさん
2006/09/10(日) 05:38:40ID:???と聞こうと思ったら「number_format()」なんて便利な関数があったのですね。
ちなみにこれが無い場合どのようなやり方が効率が良いでしょうか。
自分は今金額の長さを最初に図ってifで条件分岐させようと思っていました。
3で割って1余るとき2余るときそれ以外の3種類です。(先頭から区切るので余る桁でコンマの打ち方を変えてます)
0487nobodyさん
2006/09/10(日) 05:42:31ID:???number_format()のあるPHPでそんなこと考えたこともなかったけど、
あえて必要が出たら
ttp://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
を移植すると思う。
0488nobodyさん
2006/09/10(日) 07:34:35ID:???0489nobodyさん
2006/09/10(日) 09:19:06ID:???0490nobodyさん
2006/09/10(日) 10:03:44ID:zVKYsOR20491nobodyさん
2006/09/10(日) 10:21:56ID:???0494486
2006/09/10(日) 10:57:59ID:???0495nobodyさん
2006/09/10(日) 11:04:57ID:vRp21kRkで、ローカルでテストしてみたのですが、ブラウザに書き込んだ内容が表示されません。
どなたかどうやったら表示されるようになるか、教えてください。
0496nobodyさん
2006/09/10(日) 11:09:43ID:???0497nobodyさん
2006/09/10(日) 11:17:29ID:???0500クダラナェ質問です。
2006/09/10(日) 13:28:06ID:???$Result=array();
$Data=file("商品.csv");
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
$Match=true;
現在の「商品.CSV」からの全体のデータではなく、$line[0]と$line[30]のデータ内のみから
検索データを抽出したいのですが、どうすればいいのでしょうか?
0502nobodyさん
2006/09/10(日) 13:46:34ID:???0、30用のループを別に用意するとか
ループを一つにして if($i != 0 && $i != 30) continue; とskipするとか
0503nobodyさん
2006/09/10(日) 14:09:50ID:QbCxbqAn$a = array(
array(1,2,3),array(1,3,2),
array(2,1,3),array(2,3,1),
array(3,1,2),array(3,2,1)
);
print_r($a);
foreach($a as &$b){
array_push($b,$b[0]);
}
print_r($a);
foreach($a as $b){
foreach($b as $c){
echo $c;
}
echo '<br/>';
}
?>
1から3までの順列を定義し、さらにその末尾に最初の値を付けた数列を得ようとしています。
しかしこれを実行すると
1231
1321
2132
2312
3123
3123
と何故か最後の1つだけ最後から2番目の数列と同じ値になってしまいます。
foreachで$bを参照にしている影響だと思いますが($bの変数名を変えればうまくいきます)、
どういう原因でこうなるんでしょうか?
0504nobodyさん
2006/09/10(日) 14:44:12ID:???最初のforeachループが論理的には
$b =& $a[0]; array_push($b,$b[0]);
$b =& $a[1]; array_push($b,$b[0]);
$b =& $a[2]; array_push($b,$b[0]);
:
:
$b =& $a[5]; array_push($b,$b[0]);
というふうに展開されるので、以降は$bは「$aの最後の要素」のエイリアスとして機能する。
これを避けるには、ループの直後でunset($b);をやる。
0505nobodyさん
2006/09/10(日) 15:10:31ID:???for($i=0;$i<=30;$i++){
array_push($Result, "ageてIDを出せこのやろう");
}
$search = array(0,30);
for($i=0;$<=sizeof($Data);$i++){
if(!in_array($i,$search)) continue;
echo("それともこうか?このやろう");
}
0506nobodyさん
2006/09/10(日) 16:01:48ID:QbCxbqAnなるほど内部ではそんなことになってたんですね。
どうもありがとうございました。
0507nobodyさん
2006/09/10(日) 16:04:12ID:???自分の理解出来る方法で試行錯誤してみたほうがいいのでは
0508nobodyさん
2006/09/10(日) 16:21:23ID:???入力→確認→処理
という流れが多いので、
確認の部分をフレームワークの中に組み込みたいんですが、
どこに組み込めばいいんだろう。
0510nobodyさん
2006/09/10(日) 16:25:20ID:???0511nobodyさん
2006/09/10(日) 16:27:28ID:???0512nobodyさん
2006/09/10(日) 16:28:35ID:???フレームワークの話はこちらで。
[PHP]フレームワークについて語るスレ4[総合]
http://pc8.2ch.net/test/read.cgi/php/1151706907/
0513nobodyさん
2006/09/10(日) 16:28:58ID:???>>504的な動作に自力で気付くのはなかなか難しいと思われ
大抵は原因を追求する前に諦めて別の実装を探すからな
その点理由を探してる>>503は見込みがある
0514508
2006/09/10(日) 16:39:06ID:???0515nobodyさん
2006/09/10(日) 16:58:17ID:vRp21kRk0516nobodyさん
2006/09/10(日) 17:15:10ID:???自分で&付けてるんだから普通にわかるだろ
$thisを通してるケースは嵌るけど
『$this は 常にコール側のオブジェクトへのリファレンスです』
0517nobodyさん
2006/09/10(日) 17:25:46ID:???自分で書いたのに分からないってのは・・
0518nobodyさん
2006/09/10(日) 17:27:48ID:???参照つけたループ変数を同名で後から使うほうが悪いってのもあるけど、ループ抜けたあとまでエイリアスとして働き続けるってのは、いざバグったときにかなり発見しづらいと思う。
しかも参照してる対象が、foreachに使った配列の最後の要素と来たもんだ。
0520513
2006/09/10(日) 17:54:04ID:???0521nobodyさん
2006/09/10(日) 18:29:53ID:???ってでますけどどこかおかしいですか↓
for($n=0;$n<sizeof($ArrKeyword);$n++){
if(!eregi($ArrKeyword[$n],$lines)){
$Match=false;
break;
■ このスレッドは過去ログ倉庫に格納されています