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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/09/16 18:17:37ID:/HV017tY
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 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-4
0620nobodyさん04/09/28 22:04:17ID:???
$text = mb_eregi_replace('([ァ-ヶー]{3,})', '<a href="search.php?key=\1" class="keyword">\1</a>', $text);
このような処理を考えているのですが、serch=?key=\1 の \1 を urlencode したいのです。

$text = mb_eregi_replace('([ァ-ヶー]{3,})', '<a href="search.php?key=' . urlencode('\1') . '" class="keyword">\1</a>', $text);
とやってみてもダメでした。

何か良い方法はありませんか?
0621nobodyさん04/09/28 23:52:31ID:???
PHPで、
スクリプトの終了時に呼び出すハンドラを設定することは
できますか?
0622nobodyさん04/09/29 01:16:23ID:???
>>615
普通にhttpsだろ。http://jp.php.net/openssl

さもなくばこの仕様書から実装しなさい。
http://info.isl.ntt.co.jp/camellia/CRYPTREC/2001/01jspec.pdf
0623nobodyさん04/09/29 01:20:41ID:???
>>620
消えろカス

>>621
マニュアル読めよ
http://jp.php.net/manual/ja/ref.funchand.php
062462004/09/29 01:55:26ID:???
>>623
解決しました。すいませんでした。
062562104/09/29 02:28:55ID:???
>623
register_shutdown_functionですね。
ありがとうございました。
0626nobodyさん04/09/29 02:36:18ID:VlQlAY+W
PEARのXML_RSS
http://pear.php.net/manual/en/package.xml.xml-rss.php
で、RSSの「content:encoded」を取得するにはどうすればよいですか?
0627nobodyさん04/09/29 15:52:26ID:LWHTYlg+
あるphpを設置したところ、

Querry Err
SELECT COUNT(*) CNT from CM_M

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/*****/www/ad/cm_list.php on line 80

などというメッセージがたくさん出てしまいました。
これはうまくMySQLにつなげてない事を示しているのでしょうか?
0628nobodyさん04/09/29 16:07:47ID:???
>>626
ソースのコメント読めば分かるだろ。
拾いたいモジュールがあればmoduleTagsプロパティに追加してやればいい。
つーかcontent:encodedうざくね。plain textと大差ないくせに。

<?php
    require_once 'XML/RSS.php';
    $rss = new XML_RSS('test.rss');
    $rss->moduleTags[] = 'CONTENT:ENCODED';
    $rss->parse();
    foreach ($rss->getItems() as $item) {
        print $item['content:encoded']."\n";    
    }
?>
0629nobodyさん04/09/29 16:09:44ID:???
>>627
英語が読めないので訳してくれ、ってことか?
cm_list.phpの80行目でmysql_fetch_array()に渡された引数は有効なMySQL result resourceではありません。
0630nobodyさん04/09/29 16:12:45ID:???
>>629
その前の query err も訳してやったほうがいいみたいだぞ。
0631nobodyさん04/09/29 16:12:50ID:???
>>627
SQL文が間違っているようだ。
文法的には問題ないので、 テーブル CM_M が未定義なんじゃないの?
0632nobodyさん04/09/29 16:23:22ID:???
>>627
DBのエラー処理しろよ
0633nobodyさん04/09/29 16:25:08ID:???

MySQLに聞いてみればいい。
063462704/09/29 16:38:50ID:LWHTYlg+
プログラムの文法自体が間違ってるんですか?
それならば私の設置したサーバーには合わない、という事ですね。
みなさんありがとうございました。
0635nobodyさん04/09/29 17:01:00ID:???
PHPで掲示板とかのログをテキストに保存するのに比べてMySQLに保存するのってどういう利点がありますか?
0636nobodyさん04/09/29 17:04:47ID:???
>>634
えええ?何を言ってるんだ君は。
最初にDBの下準備が必要なんじゃないか、という流れだよ。
0637nobodyさん04/09/29 17:05:57ID:???
>>635
データ量が増えた時に検索が早い。
0638nobodyさん04/09/29 17:17:33ID:???
>>634==635だろ
下らね
063963504/09/29 17:21:09ID:xRdAx0d3
>>638
いや違います。一応ID出しておきます。

>>637
ありがとうございます。
0640nobodyさん04/09/29 17:26:54ID:???
どのみちネタ質問だ。いいかげんウザイんで死んでくれ。
0641nobodyさん04/09/29 17:27:34ID:???
とっても無意味なIDと質問をありがとう
0642nobodyさん04/09/29 17:28:10ID:???
>>636
使い方が分からない→使えない
って事なんだろうから放っておけば
0643nobodyさん04/09/29 17:50:55ID:PVuY1v0f
include() とか require() って ファイルから読み込むのが普通ですが、
これを stringから読み込む方法は無いでしょうか?
0644nobodyさん04/09/29 17:59:21ID:???
>>643
http://php.s3.to/man/function.eval.html
064564304/09/29 18:17:30ID:PVuY1v0f
>>644
ありがとうございます。

<html>
<head></head>
<body>
<?php
print("Hello");
?>
</body>
</html>

というStringをPHPを評価して読み込みたいわけです。
fileに対してのinclude()だと可能ですが、
stringに対してのeval()だとParse errorになるようです。
0646nobodyさん04/09/29 18:21:47ID:???
>>645
http://www7.bufsiz.jp/~php/001/index.html#srting
0647nobodyさん04/09/29 18:34:05ID:???
> stringに対してのeval()だとParse errorになるようです。

マニュアル読めないのか?
phpソースに<html>なんて出てきたらエラー出るのは分かりきってるだろ。

eval('?>' . $html . '<?php ');
064864304/09/29 18:34:15ID:PVuY1v0f
(´・ω・`)ショボーン
064964304/09/29 18:38:18ID:PVuY1v0f
>>647
ありがとうございます。目から鱗でした。
(`・ω・´)シャキーン

# はい。Parse error は確信犯です。
0650nobodyさん04/09/29 18:45:07ID:???
まあPHPもSQLも軽さでしか使わないと思うんだが・・・

常時1000人が繋がってると仮定するから。
0651nobodyさん04/09/29 19:03:20ID:9Wp4ccns
MySQLで登録されたデータを検索して、何件引っかかったのかPHP側で出力したいのですが、

$cnt = mysql_query("select count(*) from テーブル名 where 条件", 接続ID)

と記述しておいて本文側でprint文で表示させてやるとResource id #2 と表示されてしまいます。
mysql_fetch_arrayは配列取得の関数なので用途が違うと思うのですが、どうすれば良いでしょうか?
0652nobodyさん04/09/29 19:08:16ID:???
>>651
違うと決め付けずにmysql_fetch_arrayの結果をvar_dumpでもしてみれ
0653nobodyさん04/09/29 19:11:39ID:???
>>651
俺だったらPear::DB使って

$cnt = $db->getOne($query);

するな。
0654nobodyさん04/09/29 19:17:45ID:???
mysql関数なら、マニュアル。
ttp://php.s3.to/man/function.mysql-num-rows.html
0655nobodyさん04/09/29 19:21:36ID:???
>>651
mysql_queryの返り値から得るとか有り得ないだろ
別名を付けて値を得る
select count(*) as cnt ...... とか
065665104/09/29 19:24:28ID:???
>>652
なるほど。配列に格納される様になっていたのですねorz

>>653
PEARを使おうとも思いましたが、件数表示のためだけに使うのも…と思ってやめました。
今度機会があったら使ってやってみようと思います。

返答ありがとうございました。おかげさまで解決しました。
065765104/09/29 19:29:52ID:???
>>655
そういう方法もあるのですか…勉強してきます
0658nobodyさん04/09/29 20:00:19ID:???
>>651

$hdl = mysql_query('SELECT * FROM … WHERE …') or die('失敗');
$num = mysql_num_rows($hdl);
print $num;

ってんじゃ、いかんのか?
0659nobodyさん04/09/29 20:02:51ID:???
>658 資源の無駄
0660nobodyさん04/09/29 20:24:50ID:???
たった今バッチ1本と検索系1本書き終えましたー。
これが初めてPHPで書いたコード。
質問はしなかったけど、ログは参考になったので、ひとことお礼まで。
0661nobodyさん04/09/29 21:16:38ID:???
>>660
晒せ
0662nobodyさん04/09/29 23:17:00ID:pA14RzMO
たまたまこのスレ覗いてみただけなのですが、
>659 さんの仰っている資源ってどのことを指すのでしょうか?
0663nobodyさん04/09/29 23:18:21ID:???
ケナフとかだろ
0664nobodyさん04/09/29 23:22:15ID:???
>>653
$s = "select count(*) as total from ...";
$q = mysql_query($q);
list($total) = each(mysql_fetch_row($q));

将来的な互換性も考慮するとpearとかくだらんものは使わないほうが良いと思われ。
0665nobodyさん04/09/29 23:28:28ID:???
>>664
PEARよりあなたの方がくだらないですよ(^^)
0666nobodyさん04/09/29 23:29:54ID:???
そこでphplibですよ
0667nobodyさん04/09/29 23:29:57ID:???
666get, zuzaa
0668nobodyさん04/09/29 23:30:19ID:???
orz
0669nobodyさん04/09/30 00:05:29ID:???
>>662
SELECT COUNT(*) だとmysqlが返すのは数値ひとつ
SELECT * だとwhereに該当する行すべて
といいたいんだろうけど、実際問題としてどのくらい無駄になってるかは
mysqlがCOUNT(*)をどの程度最適化しているか、という実装次第
0670nobodyさん04/09/30 00:05:33ID:???
なんか最近sAGEが多いな〜、
このスレは。。。なんだけどなぁ・・・。
新入りが多いのかレベルも低そうだし。
0671nobodyさん04/09/30 00:08:26ID:???
>>669
そんな処理やってねーよ
0672nobodyさん04/09/30 00:26:22ID:???
>>670
Webプログラマー、とくにPHPともなると低レベルなのは仕方ないだろ。
初めてのプログラミングがPHPという奴も多いだろうし。
0673nobodyさん04/09/30 01:34:37ID:???
だよな
Cかアセンブラくらいできないとプログラマとは呼べない
PHPなんて小学生でもできる
0674nobodyさん04/09/30 01:38:25ID:???
「PHPができる」って意味はおかしいけどな。
0675nobodyさん04/09/30 01:42:59ID:???
その以前に、カポコン自体が低レベr(ry
0676nobodyさん04/09/30 01:44:33ID:???
じゃあなに?
PHPが 何?
0677nobodyさん04/09/30 01:50:22ID:???
>>673
いまどきアセンブラってw
あれを選択して得点できる基本情報技術者試験は時代錯誤もいいとこかと。
オブジェクト指向概念でも出題してくれるほうが現場としてはありがたいわけで。
0678nobodyさん04/09/30 01:50:37ID:???
>674
出来る 〜が生じる だからおかしくないだろ
0679nobodyさん04/09/30 02:12:05ID:???
俺はPHPが初めてのプログラミング。
1年やってる。
けど、やればやるほど知らないといけないことが増えまくりでエンドレス。
そして、その度に自分が無知であることに思い知らされる。
何かキリが無い様な気がして、どうしようかと。
趣味でやってる程度だけど、将来役に立つのかさえ分からない。
もの凄く無駄な時間を費やしてる様な気がしてならない。
けど、楽しい。
このスレは、質問したこと無いけど、ずっとROMってる。

言いたいことが上手く言えん。
質問でも何でもないのでスルーよろ。
0680nobodyさん04/09/30 02:21:29ID:???
宣言してない変数は使えないようにしたいんだけど
この機能いつ実装されるんだろうな
0681nobodyさん04/09/30 02:25:36ID:???
>>680
そういうオプションがあってもいいような気はするが、
それはPHPの精神には反するんじゃないだろうか。
別に明文化されてるわけじゃないけど。
0682nobodyさん04/09/30 02:26:06ID:???
>>680
設定でできたはず
0683nobodyさん04/09/30 02:32:33ID:???
え、個人的に必要ならやればいいじゃない。エラー周りのコードをわずかに書くだけだし。

>>679
無駄な時間と思えるようになったのなら上等上等。
Cやハードウェアやアルゴリズムに手を出していい時期になったんじゃないの。
Basicじゃものたりなくなって〜っみたいのが、今はスクリプト言語がそれに当たるのかも知れんね。
0684nobodyさん04/09/30 02:35:23ID:???
今はプログラミングも結構細分化されてる部分があるから、
進みたい分野をある程度絞ってるのも手だろう
もちろんどの分野のコードを読むにも必要になる知識があるが、
やりながら覚えないと楽しくない
必要だからやっとけと言われても実感伴わないとな
0685nobodyさん04/09/30 02:35:46ID:???
>>677
オブジェクト指向何ぞでプログラミングしてたらROMに収まり切りません。

基本情報処理技術者なんだから、アセンブラやCOBOLなんかの古典的言語も"基本"としてやっとけ。
あとは自分の分野じゃ基本では足りない部分をみっちりやれば良い。
0686nobodyさん04/09/30 02:45:06ID:???
今時、実社会にCOBOLなんてあるのかな
いくらやっても、無かったら意味ない

それより、プログラムの流れの理解のほうが重要度が高い
Cを極めて、プラスもう1つがいいと思うが。
0687nobodyさん04/09/30 02:49:20ID:???
> オブジェクト指向概念
> 基本情報処理技術者

基本情報処理もオブ指向もコーディングだけじゃないのよね
0688nobodyさん04/09/30 02:51:16ID:???
PHP は何時までたっても Perl の分家。お遊び言語にすぎない。
PHP で飯が食える時期はあと数年だよ。本気なら C/C++ だね。
0689nobodyさん04/09/30 03:11:33ID:???
PHPもPerlと同じで一時だけ
また都合の良いものが出てきたら、そっちへ一斉に乗り換えるから。

C/C++がキッチリしていれば、どんな言語が出ようとも
理解が早い

とはいえ、実際にPHPで動かしてる訳で、
趣味でCを勉強すればいいだけとも言える。
0690カポコン04/09/30 03:19:35ID:???
C/C++でWEBプログラミングって本気ですか?
.粘着厨まで現れたか・・・w。
0691nobodyさん04/09/30 03:28:02ID:???
ごめんなさい。冗談ですた
0692nobodyさん04/09/30 03:29:37ID:???
オレの口から言えることはただ一つ。本気かどうかを決めるのは
本人次第ということだ
0693nobodyさん04/09/30 06:58:10ID:???
今ならC覚えるよかJavaの方が応用範囲広いんじゃね?
0694nobodyさん04/09/30 09:18:21ID:GWvHODZq
PEAR等に出てくる"::"ってどういう意味?
0695nobodyさん04/09/30 09:19:39ID:???
>>682
設定できないから困ってるんだが
PHP5だと出来るのかい?
0696軟式PHP04/09/30 09:47:04ID:???
>>695
使えないようにというか、エラー設定でE_NOTICEを追加すれば
注意文が出るようになるよ。
0697nobodyさん04/09/30 10:30:56ID:???
>>693
応用範囲を言い出したら、
アセンブラ≧C>Java
なんじゃないか? Cやアセンブラなら手間さえかければJavaのできることはできるよ
0698軟式PHP04/09/30 10:41:17ID:???
応用範囲っていうかケースバイケースでしょうに。
アセンブラはぶっちゃげ覚えなくてもいいと思う。
変数に0入れるより、自分自身でxorしたほうが早いとかそんな時代じゃないしさ。
ゲーム業界でガリガリやるつもりじゃないかぎりはイラヌ。
やるとしてもかじる程度、他の勉強の時間に割り当てたほうが良い。
0699nobodyさん04/09/30 10:41:54ID:???
>>696
参照時はNoticeが出るけど、代入時には出ない。
0700軟式PHP04/09/30 10:48:19ID:???
>>699
ああ、全部「var 変数;」とちゃんと宣言したかったというわけか。。
文盲勘違いでスマソ。あったっけかなぁ。調べてみるか。
0701nobodyさん04/09/30 10:51:39ID:???
fgetcsvとwhileでCSVファイルをテーブル一覧表示にしています。
CSVは20040930.csvのようにyyyymmddで名前を付けています。
これを新しい日付順にソートする方法は無いでしょうか?
070269904/09/30 10:58:14ID:???
>>700
うん。別に俺が元質問者じゃないのだけどね。

俺も最初のころは変数宣言が欲しいなと思ったことはあるが、
慣れてきたのか、もうさほど思わなくなった。

参照の方は、E_NOTICEで回避できるし、代入時のtypoも
うまく言えないけど、簡単に見つけれるような書き方に
なったような気がする。
0703nobodyさん04/09/30 12:08:14ID:???
>>701
配列化済みのファイル名なら、配列関数。
http://php.s3.to/man/ref.array.html

sort()とかrsort()とかその他色々。
0704nobodyさん04/09/30 14:08:03ID:???
>>694
君はOOPで実装したことないの?
0705nobodyさん04/09/30 14:12:51ID:???
別にOOPやってなくてもclass使ってコーディングしたことがあれば…
static method
0706nobodyさん04/09/30 14:17:10ID:???
>>705
分からない人はだまっておいたほうが質問者のためです
0707nobodyさん04/09/30 14:27:01ID:???
分からない奴はどう分からないかが
分からないのだから、何か反応いるって
分かる香具師は、何が分からないか
分かるから、自分で行動する
0708nobodyさん04/09/30 14:31:51ID:???
どちらにせよ704で情報十分だろ
0709nobodyさん04/09/30 14:37:13ID:???
>>694
それならC言語登場前にユニクスもマルティクスも出来上がってる
応用不可能な分野が増えたために言語&開発手法戦争時代に突入したと思われ
0710nobodyさん04/09/30 14:39:50ID:???
>>706
どういう意味?
0711nobodyさん04/09/30 14:43:48ID:???
>>704
汎用性があがると生産性が落ちるのかもな
OSI参照モデルの問題設定と同じだ
071270504/09/30 14:43:51ID:???
>>704
んじゃ、これでどうだ。
ttp://php.s3.to/man/keyword.paamayim-nekudotayim.html

class使うからOOPってわけでもないし。
071370104/09/30 15:12:12ID:???
CSVの中身の表示は置いといて、ファイル名を配列に格納
ソートして表示を試そうとしたのですが、上手くいきません

<?php
$fArr = array();
$df = opendir ("./csvdata/");
while ($tmp = readdir($df)){
if ($tmp !="." && $tmp !=".."){
$fName = basename($tmp);
$fArr[$fName] = $tmp;
echo "$fArr[$fName]<br>";
}
}
closedir ($df);
?>

ここからどのようにしたら良いでしょう?
echoの上にソート関数を置いたら激しくエラーが出ました
0714nobodyさん04/09/30 15:18:40ID:???
>>713 おらおらっ!

<?php
$fArr = array();
$df = opendir ("./csvdata/");
while ($tmp = readdir($df)){
if ($tmp !="." && $tmp !=".."){
$fName = basename($tmp);
$fArr[$fName] = $tmp;
}
}
closedir ($df);

// ↓ ここで ソート

// ↑ ここで ソート

print_r($fArr);
?>
0715nobodyさん04/09/30 15:52:23ID:GWvHODZq
>>712
ようやく分かりました。thx!

OOPしたことはありますが、
「必ず」インスタンスを
作るものだと思っていました。
0716nobodyさん04/09/30 15:57:43ID:???
俺はclassも作るし、-> も :: も使うけど…

OOPじゃなくて、構造化プログラミング。
0717nobodyさん04/09/30 16:56:43ID:h+OAAFCj
PHPで携帯の戻るを制御か禁止する方法知りませんか?
ドコモとauだけでも…
0718nobodyさん04/09/30 16:59:18ID:???
またお前か
0719nobodyさん04/09/30 17:40:26ID:???
放置しとけばいいさ
0720704,71204/09/30 18:22:02ID:GWvHODZq
>712のページのサンプルを引用して・・・

class Aのインスタンスをnewしてから
$a->example()とした方が良いのか?
A::example()とした方が良いのか?

(もちろん、両方の書き方が可能、という前提で)
それぞれの利点/欠点を教えて下さい。
(特に、どっちが早いとか、効率が良いとか)
■ このスレッドは過去ログ倉庫に格納されています