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

【PHP】質問スレッドpart16【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/04/07 01:06ID:HTcWOpWf
PHP全般の質問スレです。
上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。

■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ及び注意事項等は、 あふぉが居なけりゃ>>2-5
0362nobodyさん04/04/23 14:48ID:???
>>358
Apacheを改造したらいいよ。
0363nobodyさん04/04/23 15:36ID:???
>>362
> >>358
> Apacheを改造したらいいよ。

すいません意味がわからないです。
0364nobodyさん04/04/23 15:44ID:???
>>358
その前になんでtestが全角なんだ?
0365nobodyさん04/04/23 15:58ID:???
>>364
> >>358
> その前になんでtestが全角なんだ?

あ、すいません半角のつもりが全角になってました。

メインは「?(クエスチョン)」を「_(アンダーバー)」にしてもスクリプトが実行されるようにするにはどうしたらいいのかと言うことでして。

0366nobodyさん04/04/23 16:13ID:???
>365
そんなことはしないでください
どうしてもするなら、世間一般のインターネットとは
激しく隔離されたネットワークでひっそりやってくだちい
0367nobodyさん04/04/23 16:22ID:???
351です.

>>361
業者が作ったスクリプトだったんで直してもらえました.
納品後は当方で修正する事になってたんですけど
症状を話したら「すぐに直します」と言ってくれました!
0368nobodyさん04/04/23 17:05ID:???
>>367
そんならはなっからここで質問するなと
0369nobodyさん04/04/23 17:06ID:???
>>365
なぜ「?」をセパレータに使っているのか
考えたことも無いのかな?

>>367
いい業者だ
0370nobodyさん04/04/23 17:29ID:???
いい業者かどうかはわからんな

1.クライアントの尻拭いもしてくれる本当に親切な業者
2.クライアントが351のような質問を投げるレベルなのをいいことに
 吹っかけているので、それがばれないように親切を装っている

他には?
0371nobodyさん04/04/23 18:47ID:???
普通1は考えられんだろ
0372nobodyさん04/04/23 20:09ID:???
>>370
> 他には?

3.単に自分がルールになったつもりで業者の善し悪しを語る>>370が馬鹿だというだけ。
0373nobodyさん04/04/23 20:15ID:???
スキルもないのに、わからないと回答になってないレスを付ける奴が多いな。

>>371,>>370,>>368,>>366,>>360,>>352 あたり

余裕がないね。
0374nobodyさん04/04/23 21:08ID:???
あんたもその一人のようだな。
0375nobodyさん04/04/23 22:38ID:???
>>374
子供はおねんねの時間だぞ
0376nobodyさん04/04/23 23:25ID:DLBJE4jS
$_GETを使わず行くとなればアンダースコア以降をsplitさせるわけだが、
そんなあほな事するのか。実際。
0377nobodyさん04/04/23 23:30ID:???
>>376
それ以前の問題だと思うのだが。
0378nobodyさん04/04/24 00:50ID:???
(´-`).。oO(そう思うなら代わりに回答すればいいのに・・・)
0379nobodyさん04/04/24 00:57ID:???
既に答えているレスがあるのに、
さらに見当違いなレスに返しただけなんだけどな。
0380nobodyさん04/04/24 09:50ID:???
そろそろ新題の季節です(・∀・)
0381nobodyさん04/04/24 10:39ID:???
何となくオブジェクト指向がわかってきましたが、
永続化がいまいちわからないです。
MVCスタイルで開発をするとすれば、
DBラッパークラスを作って
モデルクラスからそいつに関連を張るってことでいいんでしょうか?
その場合DBラッパークラスは
モデルクラスごとに、DBラッパークラスを継承したクラスを別々に
使うべきなんですか?
0382nobodyさん04/04/24 13:43ID:???
質問です。

月の単位を"05"とか"07"とか、ゼロを付けて二桁に成形してるんですが、
その数字に引き算、加算した時に、
同じく二桁になるようにしたいんですが、どうしたらできますか?

つまり、"05" - 1 = "04"(四月)みたいな。

初心者の自分が考えたのは、単純に計算結果後に

if ( $result < 10 ) "0" . $result;

みたいなのですが、普通はどうやって処理するんでしょうか?
0383nobodyさん04/04/24 13:47ID:???
sprintf('%02d',$result);
0384nobodyさん04/04/24 13:52ID:???
>>382
普段は整数型(int型)で計算しておいて、
出力時にprintf("%02d",int);必要によってsprintfでいいんじゃね。
0385nobodyさん04/04/24 13:56ID:???
>>381
そういう質問はPHP MLにしたほうがいいと思われ。
ここ初心者用だから。
0386nobodyさん04/04/24 14:09ID:???
>>383
>>384

ありがとうございます、できました…
0387nobodyさん04/04/24 14:22ID:???
>>385
別に構わないだろ。
0388nobodyさん04/04/24 14:46ID:???
>>387
ここできいても誰も答えられたいって言いたいんだろ
0389nobodyさん04/04/24 17:45ID:???
phpのページで、ページ内アンカーに移動するにはどうしたらいいんでしょうか?

いや、普通に呼び元からhoge.php#hogeとさえやってれば移動できますが、
ジャンプ時点ではアンカー貼れてないんですよね。
呼び元の方では、

http://www.hogehoge.net/hoge.php?a=b&b=c&c=d&d=e&e=f&anchor=hoge

という風に、変数の中の一番最後にアンカー用のパラメータをくっつけてフォーム送信してます。
で、方法としては、このanchor=hogeのパラメータを利用して

header("Location: ?a=b&b=c&c=d&d=e&e=f#hoge");

みたいな形でリダイレクトさせるしかないんでしょうが、
これだとGETでしか投げれないじゃないですか?
GETではなくPOSTで投げたいのでこれでは困ります。

他にjavascriptでPOSTする方法もあるようですが、
ブラウザ環境に依存するため使いたくないんです。

何かページ内アンカーに移動する良い方法ってないでしょうか?
0390nobodyさん04/04/24 18:47ID:???
>>389
>いや、普通に呼び元からhoge.php#hogeとさえやってれば移動できますが、
>ジャンプ時点ではアンカー貼れてないんですよね。

意味が判らん。アンカー位置にポジションを「移動」
しているのはブラウザのお仕事。ブラウザで解釈される
動的に生成したhtmlにアンカーが設定されていない?
クライアントサイドで弄ってなければ、生成したhtmlは
静的なものでそ。おかしな話
039139004/04/24 18:59ID:???
ああ、なんとなくやりたい事は判った。

俺ならhtmlのmetaでHTTP-EQUIV="Reflesh"使ったツーアクション。
これもブラウザに依存はするが、寧ろHTTPのLocation使うより
依存度が少ない(問題が起こりにくい)

遷移元でjavascript使って切り替えたりするのは
問題が起こりやすいので止めた方がいい。
0392nobodyさん04/04/24 20:01ID:7aagULwH
Perlでの「use strict;」に該当するようなものはphpにはないのでしょうか?

変数をキチンと定義して利用したいと思っているのですが。。。
0393nobodyさん04/04/24 21:24ID:???
>381
アクセス制限で書けなかったので遅レスです。
私は DB ラッパークラスと DB アイテムクラスを書いて
DB アイテムクラスがラッパーを使うという形にしてます。
特に問題なく使えてます。

(ていうかこれはデザパタ系の話になるので
 あまり MVC とは関係ないとは思いますが)

DB ラッパークラスはクエリ関係インターフェースを持ち、
DB アイテムクラスは、データと
自身のデータベース更新のためのロジックを保持しています。
0394nobodyさん04/04/24 21:30ID:???
>>393
ども〜

永続化させたいクラスごとに
DBアイテムクラスを作るってことでしょうか?

DBアイテムとDBラッパーの間は関連をはるんですか?
なんとなく継承かなって気がするんですけど
どうなんでしょう。
0395nobodyさん04/04/24 22:03ID:???
>394
関連ってなによ?
委譲のことをいっとるのかね?

あと、どんなスタイルでも別に構わんが、
オブジェクト指向であるならば、むやみやたらと継承を使うべからず。
DBラッパーがDB自体をラップしたものであり、
DBアイテムとやらがDBに保存されるデータの単位を扱うものならば、
そこにどういう継承関係が存在するのか考えてみれ。

結論をいえば通常、>393が書いたような実装でいい。
その他、必要な処理があれば、DBのラッパーとDBデータをラップするクラスの間に
もう一枚噛ませるなどすればいい。

それと、最初からスマートな実装を無理して目指さず、
自分なりの知識で工夫して書いてみれ。
人の聞いて猿真似しても技術は身につかんぞ。
特にPHPの場合、クラス周りの仕様はルーズだから
実際に実装して動作を確かめて理解することが重要。
0396nobodyさん04/04/24 23:29ID:???
空回り〜
0397nobodyさん04/04/25 11:27ID:???
perlプログラムを複数起動できるタブブラウザみたいなソフトってないですか?
039839304/04/25 11:29ID:???
>394
> DBアイテムとDBラッパーの間は関連をはるんですか?
> なんとなく継承かなって気がするんですけど

「DB アイテムクラスがラッパーを使う」って書いたやん…。
>395さんとかどういう実装にしてるかちょっと興味ありますけど
DB ラッパーなんて単純ですから、個々で使いやすいように
好きなようにデザインしていいと思いますよ。

私は環境の関係で使わなかったけれど、
PEAR のラッパークラスとか使ってもいいと思います。
0399nobodyさん04/04/25 11:30ID:???
>397
コンソール窓を複数開くか、
タブブラウザで複数起動すればいいのでは。
複数起動の意味が曖昧でよくわかりません。
040039704/04/25 11:56ID:???
>399
レスthxです。

.plプログラムを複数同時に実行したいと思ってます
コンソール窓をたくさん開くと重いので
タブブラウザみたくメモリ消費を減らせるようなソフトはないかと思いお聞きしました。
0401nobodyさん04/04/25 12:03ID:???
>>400
使ってるOSはなによ
そのバージョンはなによ
そしてこのスレのタイトルはなによ
0402nobodyさん04/04/25 12:33ID:???
>>395,398
ありがとうございます
よく理解できました。
もし僕があなたの部下でこんな質問したら
「こいつ馬鹿だな。プッ」
ってかんじですか?
ぼく来年からSEになるんです・・
0403nobodyさん04/04/25 12:43ID:???
>>402
お前がSE?
大人をからかっちゃいかんよ
まだPGの底辺あたりだろうが
0404nobodyさん04/04/25 12:51ID:???

 お ま い ら 釣 ら れ 杉 
040539804/04/25 12:55ID:???
>402
実は私も就職活動中です。お互いがんばりましょう。
新入社員のプログラマも、文系・理系の人が半々くらい
占める企業もあるそうです。
つまりプログラミング経験のほとんどない人も PG になれます。
研修など一通りあるでしょうし、あなたのように向上心があれば
すぐ追いつき追い越せますよ。
# 決して馬鹿だなんて思いません。
0406nobodyさん04/04/25 12:58ID:???
就職活動に必死になれ、こんなところに来る暇があるなら


と釣られてみる
0407nobodyさん04/04/25 12:59ID:???
>>405
そりゃなれる。PGなんてのは誰でもなれる
SEがPGができて”当たり前”なんだから
0408nobodyさん04/04/25 13:03ID:???
プログラマ・SEの話は プログラマ板でどうぞ。
ここはPHPスレです。
040940204/04/25 13:08ID:???
>>405
ありがとうございました。
がんばります。

>>406
終わりました

>>408
ごめんなさい。
0410nobodyさん04/04/25 13:37ID:???
>>409
チョソだったのか・・・
活動中ですと言っておきながら終わりましたって・・
日本語勉強しろよ
0411nobodyさん04/04/25 15:06ID:0YVuipoQ
>>410

>>402は就職活動中とは書いていないよ。
「来年からSEになる」って言ってる。

就職活動中なのは>>398=>>405
0412nobodyさん04/04/25 15:57ID:???
>>411
ああそうだった

しかしこいつ、なんで俺にレスしたんだ
就職活動って上でレスしてる奴が答えるのが筋だろうに
041338904/04/25 16:40ID:???
>>391
おくれましたけど、ありがとうございます。
できました。
0414nobodyさん04/04/25 17:00ID:???
・PHP板でPerlネタ
・質問内容は低レベル、ググらない
・春の就職ネタ
・SE/PGネタ

リア中ならともかく社会人になろうって年齢がこんな事で悩むかよ。フル装備で釣りだろ。
もうスルーしる。
0415nobodyさん04/04/25 20:57ID:???
質問です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<?
//php
?>
//ここにhtmlのフッタがあるけど略
</body></html>

と、このようなファイルでphpを動かしているんですが(拡張子は.php)、
php内 (<? ?>内) でreturnを入れると、フッタ以降の部分がすっとばされてしまいます。

<?
//php
?>

の部分のみの残処理をすっ飛ばすのが目的なのですが…。
returnやexit、breakなど色々試してみても結果は同じでした。
どなかか間違ってる部分を指摘していただけないでしょうか。
0416nobodyさん04/04/25 21:38ID:???
if文を使う
関数にする
別ファイルにする
0417nobodyさん04/04/25 22:09ID:???
$pos = array_search ( $fruits , $f_list );

print $fruits . "<br>";
print_r ( $f_list );
print "<br>" . $pos;

と、こんなコードを書いたら

バナナ   //$fruitsの中身
Array ( [0] => りんご [1] => みかん [2] => バナナ [3] => メロン )   //$f_listの中身

と、こういう答えが返ってきたんだけど、なぜかarray_searchの結果 $pos だけが返ってきません。
ちゃんと配列の中にバナナ入ってるのに。

なんで?どこがおかしいんでしょうか?
0418nobodyさん04/04/25 22:16ID:???
>415
returnはそのファイルの処理をそこで中断して呼び出し元に戻る

hoge.php
<?php
echo "ho";
return;
echo "ge";
?>

fuga.php
<?php
include("hoge.php");
?>
0419nobodyさん04/04/25 22:23ID:???
>>416
ありがとうございます。
フッタ以下を関数にすることにして、returnとセットで呼び出すことにしました。
0420nobodyさん04/04/25 22:25ID:???
>>418
あ、別ファイルってそういうことですか。
確かにそういった方法もありますね。
ありがとうございました。
042141704/04/26 00:21ID:???
自己解決。
配列の各項目に改行が入ってただけでした。
あしからず。
0422nobodyさん04/04/26 13:36ID:???
http://f13.aaacafe.ne.jp/perlvsphp/
0423nobodyさん04/04/26 20:30ID:v21IQMwx
viを使って慣れてきたときの事を思い出しつつ…

viでカーソルを動かすとき、HJKLでは動けるが、カーソルキーでは動けない。
そんな束縛感にひたり、ニヤリとしてしまう。
長井秀和です。

viの話。
viに慣れてきた奴は、Windowsのメモ帳でも間違えたときEsc連打しちゃう。間違いない。

viに慣れてきた奴は、秀丸のあのボタンの絵のセンスはどうにかならないものかと思っている。
間違いない。

Excelで入力をミスったときにEscを押すんじゃない、入力した内容が消えてしまうぞ、気をつけろー!!

viに慣れてきた奴は、アレを使うときCtrl-c、Ctrl-sしか知らなかったりする。間違いない。

viに慣れてきた奴は、矩形選択にちょっとあこがれている。間違いない。
0424nobodyさん04/04/26 21:00ID:???
秀丸でも矩形選択はで切るんだよな。
で、vi(vim)の折りたたみ機能がほすい。
スレ違いスマソ
0425nobodyさん04/04/26 21:43ID:???
>>424
いいよいいよ過疎地ですから盛り上がればそれでよし。
それにしても矩形選択なんて使ったこと無いよ(´・ω・`)ショボーン
0426nobodyさん04/04/27 00:16ID:???
>>423
長井秀和が、一回のコントで「間違いない」と言うのは、
精々3〜5回程度である。間違いない。
0427nobodyさん04/04/27 11:47ID:???
PHPで、文字列の中にある < を <に変えるには、どうすればいいですか?
0428nobodyさん04/04/27 11:48ID:???
間違えた・・・もう一度入力します、すいません
PHPで、文字列の中にある < を &lt;に変えるには、どうすればいいですか?
教えてください、お願いします
0429nobodyさん04/04/27 11:53ID:???
>>428
htmlspecialcharsみたいな事をしたいの?
043042804/04/27 11:54ID:840uECrU
>>429

まぁ、< を&lt;に変えればかまいません
0431nobodyさん04/04/27 12:02ID:???
>>428
str_replace()
0432nobodyさん04/04/27 12:08ID:U23hB6pM
preg_replace()
043342804/04/27 12:11ID:???
>>429,431,432
どれが一番いいの?
0434nobodyさん04/04/27 12:20ID:???
好きなのにすれば?
PHPマニュアルみながら覚えろ
0435nobodyさん04/04/27 12:41ID:???
どれが一番いいかなんて、状況によるだろうから全部試せばいい。
for ($i=0,$str2='' ; $i<strlen($str); $i++) {
$a=$str{$i}; $str2+=($a=='<')?'&lt;':$a; }
とか書いてもいいし
0436nobodyさん04/04/27 13:00ID:???
日本語入りの文字列でstr_replaceやるとヤバイ?
0437nobodyさん04/04/27 13:02ID:???
>>436
EUCやUTFなら無問題
0438nobodyさん04/04/27 18:15ID:???
>>436
基本的にmb_関数名
で、マルチバイト処理ができますよ
mb_str_replace
0439nobodyさん04/04/27 18:18ID:???
htmlspecialcharsでいいとおもうんだがな。
0440nobodyさん04/04/27 18:27ID:???
escape_echo($str);


function escape_echo($str)
{
  echo htmlspecialchars($str);
}
0441nobodyさん04/04/27 18:30ID:???
俺ならこうするね

my_echo($str);


function my_echo($str)
{
  echo htmlspecialchars($str);
}
0442nobodyさん04/04/27 19:06ID:0/nuV2X8
質問です。

偶に"http//hoge/?top"みたいなアドレスのものがありますが、
これの取得または有無を簡単にできる手段はありませんか?

予測される物全部をis_nullで調べていたんですが
もっとスマートにできればなと思いまして・・・
0443nobodyさん04/04/27 19:07ID:0/nuV2X8
修正です

>偶に"http//hoge/?top"みたいなアドレスのものがありますが、
>これ"?top"の部分の取得または有無を簡単にできる手段はありませんか?
0444nobodyさん04/04/27 19:23ID:???
何を訊きたいのかよくわからんが$_GET/$HTTP_GET_VARS
0445nobodyさん04/04/27 19:24ID:???
>>443
if (!isset($_GET['top'])) echo '何かパラメタ渡せ(゚Д゚ )ゴルァ!!';
は?
0446nobodyさん04/04/27 19:53ID:???


isset($_SERVER['QUERY_STRING'])
だろ・・・
0447nobodyさん04/04/27 20:31ID:???
sprintfなんかで文字列中に%を含みたい時はどうしたらいいでしょうか
$str = sprintf("%d%", 100); //"100%"を期待
%のエスケープってできましたっけ?
0448nobodyさん04/04/27 20:43ID:???
>446
あ 有り難うございます。

>444-445
説明が悪くてすいませんでした。
0449nobodyさん04/04/27 20:44ID:???
>447
$str = sprintf("%d%%", 100);
だと思います。
045044704/04/27 20:52ID:???
>>449
ありがとうございます。型指定子に%でパーセント文字になるんですね
0451nobodyさん04/04/27 21:36ID:+FvBbqtX
あるテーブル内に、Perl-cgiで書かれた出力結果を出すにはどうすればいいでしょうか?
例えば test.phpなら
<table><tr><td>
<?php include "test.php";?>
</td></tr></table>
でテーブル内にtest.phpの出力ができるようですが、
Perl-cgiですと、どうすればできるでしょうか?

<?php include "test.cgi";?>

<?php header("Locatin:http//・・・/test.cgi");?>
では、駄目でした。
0452nobodyさん04/04/27 21:39ID:???
exec
0453nobodyさん04/04/27 21:39ID:???
<?php system("perl test.cgi"); ?>
0454nobodyさん04/04/27 21:52ID:hpcGtt+e
激しく厨な質問で申し訳ないんだが、URLで渡した変数(&mode=allみたいなの)は、
どうやって拾えばいいの?$_GETをどうせぇと?
0455nobodyさん04/04/27 21:56ID:???
>>454
http://ahya.org/aiueo/?a=1mode=all&exec=true

echo $_SERVER['QUERY_STRING']; //a=1mode=all&exec=true
echo $_REQUEST['a']; //1
echo $_REQUEST['mode']; //all
echo $_REQUEST['exec']; //true

$_REQUESTはGET,POSTどちらのメソッドの場合でもおk
$_GETはGETの時のみね
$_POSTはPOST〃
0456nobodyさん04/04/27 22:04ID:???
>455
折角URLまで書いていただいてありがたいのですが404ですた…。
正直説明するのも骨が折れると思われるので、誘導して頂けません?
0457nobodyさん04/04/27 22:04ID:???
>>455
echo $_REQUEST['a']; //1mode=all
と、揚げ足とってみるテスト
0458nobodyさん04/04/27 22:04ID:+FvBbqtX
>>453
 出力が出ないです。空白のままのようです。
 ちなみに、includeではtest.cgiのテキストが表示されました。
0459nobodyさん04/04/27 22:06ID:???
>>456
もまえは、>>455にあるURLをそのまま踏んだのか?
0460nobodyさん04/04/27 22:06ID:???
>>456
いや・・・
”例え”だよ
しかもphp省略しちゃって分かりにくかったかな

http://ahya.org/aiueo/test.php?a=1&mode=all&exec=true

test.php
<?php
echo $_SERVER['QUERY_STRING']; //a=1mode=all&exec=true
echo $_REQUEST['a']; //1
echo $_REQUEST['mode']; //all
echo $_REQUEST['exec']; //true

?>

>>457
&忘れてた、、スマソ
0461nobodyさん04/04/27 22:09ID:???
>>458
echo system("/usr/bin/perl test.cgi");
■ このスレッドは過去ログ倉庫に格納されています