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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/11/01 04:09:15ID:???
・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 
0792nobodyさん04/11/18 02:19:03ID:???
>>790
$sec = 6000;
echo date('H:i:s', mktime(0, 0, $sec));

一応mktimeでいけるね
24時間以上だとこのままでは無理だけど
079379204/11/18 02:32:31ID:???
24時間以上に対応したいなら多分関数作った方が早い
参考になるか分からんけど漏れが作った奴載せとく

function sectohour($sec) {
 $hour = floor($sec / 3600);
 $sec %= 3600;
 $min = floor($sec / 60);
 $sec %= 60;

 return(sprintf('%02d:%02d:%02d', $hour, $min, $sec));
}
0794nobodyさん04/11/18 03:35:35ID:???
携帯の振り分けなんですが、
FOMA端末のUA識別は
"DoCoMo/^2\.0" という表記で良いんでしょうか?

<?
$ua = $_SERVER["HTTP_USER_AGENT"];
if(ereg("DoCoMo/^2\.0",$ua)){
header("Location: aaa.html");
exit;
}else {
header("Location: bbb.html");
exit;
}?>

FOMAで「aaa.html」 それ以外は「bbb.html」へ飛ばすようにしてるつもりなのですが、
上手く動作しません。
0795nobodyさん04/11/18 04:36:45ID:???
関係ないかもしれないけど携帯の場合だと
location hoge は絶対パスで書かないと駄目だとか
079679004/11/18 08:35:27ID:???
>>791,792,793

レスありがとうございます。なるほど、mktimeですか気付きませんでした。
しかし、24時間以上を扱う予定なので793さんのコードを参考に作ってみます。

みなさんありがとうございました。
0797nobodyさん04/11/18 09:49:06ID:jaTiTZm1
10日でシリーズでPHPやってるんだけど
Fatal error: Call to undefined function: mb_convert_encoding()
のエラーで止まって動かなくなりました
bm_convert_encoding()の動きはわかるんだけど
PHPのライブラリ?から読み込んでるんですか?
0798nobodyさん04/11/18 10:23:09ID:???
>>797
環境は?
Windowsだったらdll読み込んでないんだろうし、
Linux系だったらconfigureで-with指定してないんだろうな。
0799nobodyさん04/11/18 11:05:19ID:???
>>797
<?php
phpinfo();
?>
実行結果をよく確認。
0800nobodyさん04/11/18 11:06:28ID:???
797じゃないですが、win版でdllを読み込ませる場合って
c:\windows\system32にdllをおいてApacheを起動するだけでOKですか?
0801nobodyさん04/11/18 11:10:35ID:???
php.iniを変更する。
080279704/11/18 12:57:08ID:jaTiTZm1
windows 環境で
phpdevをインストールした状態です
0803nobodyさん04/11/18 14:57:43ID:z5HMJmKG
hoge=aaa
hoge=aaa&piyo=bbb
上の文字列の「aaa」の部分を抜き出したいのですが、うまい正規表現の仕方はないでしょうか?
preg_match_all("/hoge=(.+?)\&/",$str,$match);
だと、hoge=aaaのマッチが取れないのです…。
0804nobodyさん04/11/18 15:16:01ID:???
>>803
そりゃそうだ。正規表現を勉強汁。PHPの質問じゃない。
0805nobodyさん04/11/18 15:28:11ID:???
>>803
テンプレ

正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
http://pc5.2ch.net/test/read.cgi/php/1069245758/
0806nobodyさん04/11/18 15:35:00ID:???
>>803
$str = "hoge=aaa&piyo=bbb";
parse_str($str);
echo $hoge;
echo "<br>";
echo $piyo;
0807nobodyさん04/11/18 15:37:24ID:???
>>806
それは穴になりかねんぞ
080880504/11/18 15:46:53ID:???
orz
正規表現勉強するなら、ここのテンプレにあるぞ。
っと言ったつもりだった。
あっちで質問してら。
0809nobodyさん04/11/18 15:48:45ID:???
>>803
$_GET['hoge']の事だったりして
0810nobodyさん04/11/18 15:55:34ID:???
意図がよく分かんない質問だったね。(終わった事にしてる)
preg_match_all の方を使おうとしてるのを考慮すると、>>809の可能性も。。。
0811nobodyさん04/11/18 17:12:40ID:???
素朴な質問です
countとsizeof関数は、何か違うのでしょうか?
マニュアルには、sizeofはcountのエイリアスとしか記載されていませんでしたが
使い分ける必要等はあるのでしょうか?
0812nobodyさん04/11/18 17:40:40ID:???
同じ同じ。
0813nobodyさん04/11/18 17:46:25ID:???
>>809
いや実は俺もそうではないかと恐ろしくなって答えれなかった(w
0814nobodyさん04/11/18 17:57:38ID:???
>>811
エイリアスとは何かを調べれば答えは自ずと分かるでしょ。
ついでに「ラッパー」とかも調べておくといいかも。
0815nobodyさん04/11/18 18:03:03ID:???
count だとC言語使ってた香具師が多用してる変数countと
ごっちゃになるからだけだと思う。
sizeof導入も、C書きの人がすんなり入りやすいためだけだろう
多分。
0816nobodyさん04/11/18 18:03:29ID:???
他の関数へのエイリアスとなっている関数は将来どう変更が加わってもおかしくないので
使わない方が無難
0817軟式PHP04/11/18 18:07:36ID:???
(´・ω・`)?
0818nobodyさん04/11/18 18:18:24ID:8nQGI/2a
レガシーASPから、PHPへの移行を考えています。

そこで質問なのですが、
ASPでのresponse.endに該当する記述は、PHPだと何になるのでしょうか?

具体的にはフォームから送られた内容を確認するために、
受け取った変数の中身をechoで表示したところで、1度スクリプトを停止させたいのです。

基本的な事で申し訳ありませんが、よろしくお願いします。
0819nobodyさん04/11/18 18:22:11ID:???
exit;
0820nobodyさん04/11/18 18:58:04ID:???
die;
0821nobodyさん04/11/18 19:05:33ID:bps4zhVU
ereg_replace()にて文字列を変換してるのですが
たまに変換されずになることがあります。
変換内容はュ→ユのように小文字を大文字に直すだけなんですが
何か原因があるのでしょうか?
また、str_replace()とか使った方がいいですか?あまり違いがわからなくて・・。
0822nobodyさん04/11/18 19:08:54ID:???
>>821
mb_convert_kana()をどうぞ
082382204/11/18 19:13:29ID:???
少し補足しておくと、
そういう処理はマルチバイトを考慮しない関数は使わない方がいい。
色々ググってみ。
0824nobodyさん04/11/18 19:29:34ID:???
php.iniのextension=php_openssl.dll を有効にして起動したいのですが、
php_openssl.dllが見つかりませんというエラーになります。
extension_dirをフルパスに設定しても./(ドットスラ)にしても
見つからないらしいです。
他にも何か設定を変える必要があるんでしょうか?
0825nobodyさん04/11/18 19:39:34ID:???
1. php_openssl.dllがそもそも無い。
2. 違うphp.iniを変更している。
0826nobodyさん04/11/18 19:53:52ID:???
>>825

1. きちんとあります。それらしきところ(system32配下やカレントディレクトリなど)に
いろいろ配置してみましたがダメでした。見つからないらしいです。

2. extension=php_openssl.dll の行をコメントアウトして再起動するとエラーが消えるので
php.ini自体は正しいと思われです。
0827nobodyさん04/11/18 20:39:48ID:???
>>826
エラーの内容だけど、他にdllが足りないってエラーは出てない?

0828nobodyさん04/11/18 20:45:57ID:???
>826
http://php.s3.to/man/ref.openssl.html
>Win32ユーザへの注意: このモジュールをWindows環境で使用するには、PHP/Win32バイナリパッケー ジのDLLフォルダからlibeay32.dllを使用する WindowsマシンのSYSTEM32フォルダ(例: C:\WINNT\SYSTEM32または C:\WINDOWS\SYSTEM32)にコピーする必要があります。

これではないのか?
0829nobodyさん04/11/18 20:49:13ID:???
>>826
libeay32.dllをsystem32フォルダにコピー
環境変数OPENSSL_CONFを新規作成してopenssl.cnfのパスを指定
0830nobodyさん04/11/18 20:51:20ID:???
openssl.cnfはwindowsでは拡張子無しの短縮ダイヤルと表示されるので注意
編集する場合はエディタから開くで指定する。
0831nobodyさん04/11/18 22:14:30ID:VOS+8K87
PHPでは、$obj->getchild()->getname();
のように、オブジェクトを返すメソッドから直接そのメソッドを呼ぶことは、
許されてないのでしょうか?
パースエラーになります。

PHP4です。
0832nobodyさん04/11/18 22:27:31ID:XCBl1M85
単純な質問ですけど
PHPで一番得意なのはどういう処理ですか?
(DB操作や文字列処理、数値計算など)
0833nobodyさん04/11/18 22:40:23ID:???
>>832
なんじゃこの質問
0834nobodyさん04/11/18 22:40:25ID:???
>>832
マニュアルより。
PHPを使用する上で最も優れている点は、初心者に対しては非常に分かり 易いと同時に、
プロフェッショナルのプログラマに対しては多くの進んだ機能を提供している点です。
PHPの機能を羅列した長い一覧表を読まなければならないのかと心配する必要はありません。
PHPはすぐに始められますし、数時間の内に簡単なスクリプトが書けるようになります。
0835nobodyさん04/11/18 22:45:43ID:???
>>832
まー勉強するなら普通にJava行っとけって。
0836nobodyさん04/11/18 22:55:21ID:???
お遊びプログラマがJava覚えたって意味ねー
0837nobodyさん04/11/18 23:00:25ID:???
>>836
未経験者ですか?
0838nobodyさん04/11/18 23:01:18ID:???
>>833
他言語との速度比較をする際に参考にしようと思って質問しただけです

>>834
なるほど。
ということは処理的な特徴は特にないのですか?
(私はPHPを使った開発はしてません)

>>835
なぜ?

>>836
Java書けますけど
私もそう思います
0839nobodyさん04/11/18 23:05:03ID:???
>>837

趣味でやってる程度のヤシが借りるレン鯖でjavaなんか使えねえよ世間知らず。
0840nobodyさん04/11/18 23:07:11ID:???
>他言語との速度比較をする際に参考にしようと思って質問しただけです
それなら最初から速度に関して質問すればいいでしょ
全体的な処理の速さなら他の言語と違いあるだろうし、規模にもよるんだって回答もあるでしょう。
文字列処理だけ特別に早かったり、数値計算がなぜかすごく遅かったりなんていう言語はあるとは思えん。
084183104/11/18 23:13:11ID:???
で、831はダメ?
それだと、自分の中で、「PHPつかえねー」って結論になってしまいます。
それだとさみしいな。
084283204/11/18 23:16:13ID:???
>>840
全体的な速度とかは求めてません。
あくまでもPHPとして得意な処理ってなんなの?っていう件でお答えしていただきたかったのです

ちなみに特別に早いとか遅いはないですけど
得意・不得意は絶対にありますよ

特に数値計算は苦手な言語が多いので差が出やすいと思います
0843nobodyさん04/11/18 23:17:07ID:???
早く言えば、phpはWeb利用を前提にしてるから
そういう方面に使いやすい
0844nobodyさん04/11/18 23:21:08ID:???
得意不得意の前に、使う人間の頭による。
084583204/11/18 23:22:15ID:???
>>843
マニュアルでも確認できましたし
やはりそういう得意分野は処理ではなく開発(特に初心者向け)のほうで1歩前に出てるということですね
ありがとうございました。
0846nobodyさん04/11/18 23:22:25ID:???
>>826
環境書け。
話はそれからだ。
084783204/11/18 23:23:28ID:???
>>844
それはプログラミング全体の言語以前の問題で
私もそれは常に思っています
0848nobodyさん04/11/18 23:27:05ID:???
>>845
そう、初心者向けに開発しやすい
お約束が少ない


まぁ玄人(?)でも簡単に書けてすぐ動く。
速さを求めるなら、他のをどうぞ
084983204/11/18 23:32:53ID:???
>>848
なるほど。
わかりやすい回答ありがとうございます
0850nobodyさん04/11/18 23:42:50ID:???
Web関係の物は標準で組み込まれてるから
鯖に易しい
0851nobodyさん04/11/19 00:03:18ID:OG1nPnpo
MySQLの接続切断って記述しなきゃ、永遠に接続切れないのでしょうか?
0852nobodyさん04/11/19 00:17:02ID:???
サーバーへのリンクは、mysql_close()のコールにより 明示的に閉じられない限り、
スクリプトの実行終了と同時に閉じられます。

http://jp2.php.net/manual/ja/function.mysql-connect.php

mysql_pconnect()は、二つの点を除いて mysql_connect()と全く同様に動作します。

1.すでにオープンされていないかどうかを調べます。
それがみつかった場合、新規の接続をオープンする代わりに
そのリンクのIDが返されます。

2、SQLサーバーへの接続がスクリプトの実行終了時にも 閉じられないということです
0853nobodyさん04/11/19 00:23:33ID:???
>>851
MySQLサーバ側のタイムアウトで切断する。
あとPHPで普通の接続(永続的接続でない)した場合は、
スクリプト実行の終了時にPHPが自動的に切断処理を行う。
勿論自分でcloseするのも可。
0854nobodyさん04/11/19 00:43:00ID:???
まぁPHPは組み込み関数が多くて楽だよな。
web系の事なら何をするにしても関数が用意されてる。
ただ、急に名前変わったり過去の関数をずっと引きずるのはいただけない。
ずっと68Kを引きずったMacのようだ。と元マカーの俺。
0855nobodyさん04/11/19 01:04:32ID:???
>>831
ダメ。マニュアルのどっかに書かれていたのを読んだ記憶があるんだがみつからねー
()-> で検索できればエラー例が一発で出るんだけど仕様上無理なんだよなぁ
0856nobodyさん04/11/19 01:35:35ID:???
PHP5からできるようになったみたいな記述も見たな
同じく探したが見つからなかった…
0857nobodyさん04/11/19 02:15:29ID:???
設定をオートリンクにしたときurlじゃなく「こちら」って文字に
変換するにはどう変更すればいいんでしょうか?

if ($autolink) { $comment = auto_link($comment); }
になっているのですが・・・
0858nobodyさん04/11/19 02:17:52ID:???
>>857
auto_link の定義は?
0859nobodyさん04/11/19 02:42:56ID:???
>>858
# URLの自動リンク (0=no 1=yes)
$autolink = 1;

掲示板なんですがコメントにURLが張られるとそのままURLの文字にリンクが張られるので
こちら、って文字に置き換えてリンクを張りたいのです。
定義の意味がよくわからないので見当はずれだったらすみません;
0860nobodyさん04/11/19 02:49:13ID:???
>>859
見当外れだ。auto_link 関数の定義があるでしょ。
どうせ http から始まる文字列を <a href="http**">http***</a> に replace してるんだろうから
それを <a href="http**">こちら</a> に変更すればいい。
0861nobodyさん04/11/19 02:56:13ID:???
>>860
できました。見つけたらそうなってたのか、と思いました;
ありがとうございます。
0862nobodyさん04/11/19 05:57:46ID:???
>>850
あんなに共有サーバの設定しにくい代物でサーバにやさしいのか?
サーバ管理者泣かせだと思うよ
モジュール追加する作業も面倒だし
たまに他のApacheモジュールと競合するときあるのよね
どうしたもんかね

まぁサーバにやさしいというか>>848が言ってるように
初心者にやさしいだけ

標準でいっぱい入れてるから遅いってのもあるけどね
0863nobodyさん04/11/19 06:28:08ID:???
\____   ________________/
       \/
       人
    / ̄   ̄ ̄\
   (  人____)
   |./  ー◎-◎-) 
   (6     (_ _) )
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /   \__     |  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄
0864nobodyさん04/11/19 08:15:55ID:???
\____   ________________/
       \/
       人
    / ̄   ̄ ̄\
   (  人____)
   |./  ー◎-◎-) 
   (6     (_ _) )
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /   \__     |  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄
0865nobodyさん04/11/19 09:26:48ID:???
PHPからメールを送信したいのですが、SMTP AUTHで送信する場合は
どのようにしたらよいのでしょうか?
0866nobodyさん04/11/19 09:44:34ID:???
>>862
共有鯖にApacheモジュールとして入れるなよ池沼
0867nobodyさん04/11/19 10:17:24ID:???
まあ、普通はcgiにする罠。
0868nobodyさん04/11/19 10:48:57ID:???
俺が愛用している共有レンタルサーバーは2社ともモジュールだよ。
0869nobodyさん04/11/19 11:01:01ID:???
CGI、SSIが使えないならsafe_modeで安全に出来るけどな。
使えるならユーザ側でかなりの工夫しないとDBのパスワードとか盗まれるぞ。
safe_modeになってないのは論外。
0870nobodyさん04/11/19 15:26:29ID:???
>>862
PHPユーザは入ってないと嫌だろ?
0871nobodyさん04/11/19 15:26:57ID:???
↑スマン
>>866の間違い
0872nobodyさん04/11/19 15:56:12ID:???
共有鯖ならモジュールじゃない方が良い。


そもそも設定が面倒とか言ってるヘタレ共有鯖管のトコ使わんけどな。
しまいにゃセキュリティホール塞ぐの面倒とか言い出しそうだ。
0873nobodyさん04/11/19 17:35:26ID:???
PHPでMySQLのDatabaseの存在を判定するには
何使えばいい?
mysql_select_db?
0874nobodyさん04/11/19 17:59:52ID:???
ファイルロックについての質問させてもらいます

phpのflock()の信頼性はどうなのでしょうか?
flockを使用せずmkdir()を用いた方が良いのでしょうか?
0875nobodyさん04/11/19 18:20:18ID:???
そんなんだったらflockの存在意義が無いだろボケ
0876nobodyさん04/11/19 18:26:18ID:???
元々存在意義無いし
0877nobodyさん04/11/19 19:04:08ID:???
mkdirの存在意義はあるよ
0878nobodyさん04/11/19 19:30:42ID:???
マルチバイト文字列関数を使いたいのですが、どの様にすれば良いでしょうか?

↓PHPマニュアルには
http://jp2.php.net/manual/ja/ref.mbstring.php
>configureスクリプトでモジュールを有効にする必要があります。
>詳細は、インストールの節を参照して下さい。
と書いてありますが、指定されたインストールのページには
詳細どころか configureスクリプト の文字すら無く、弱っております。
0879nobodyさん04/11/19 19:45:35ID:???
>>878
志村〜
環境!環境!
0880素人04/11/19 20:44:15ID:/iwixYaK
教えてくだされ

Apache バージョン 2.0.40
PHP Version 4.3.9

簡単なファイルアップロードのプログラムを動かすと
なぜかファイルサイズが倍(正確には倍より少しちいさい)ぐらいになってしまいます。
当然、中身もおかしいので画像ファイルだとずれた画像になってしまいます。
ftpだとうまくいきます。

プログラムは
http://www.pat.hi-ho.ne.jp/dimension/sample/sample_others_upload.shtml

のとおりなのですが、、、

どなたかお心当たりはありませんでしょうか。
0881nobodyさん04/11/19 21:35:16ID:???
>>879
たぶんWindows。
なんとなく。ただただなんとなく。
0882カポコン04/11/19 21:38:18ID:???
拡張モジュールを使いたいのなら
Linuxはエナブルで追加、
Windowsは、php**.dllを置いた所に拡張モジュールを置いて
リスタート
0883nobodyさん04/11/19 21:45:35ID:???
>>882
ちゃんとした表記が出来ないなら英単語のまま書けよ。
検索も出来ないし意思の疎通が難しくなるだけだろ。
0884nobodyさん04/11/19 23:07:45ID:???
Enable = エナブル
0885nobodyさん04/11/19 23:27:14ID:???
aliasをジョージと読むことはあってもenableをエナブルとよぶ馬鹿はおらんやろ。
0886nobodyさん04/11/19 23:33:25ID:???
エナブルってツールがあるのかと思ったよ。enableかよ。
0887nobodyさん04/11/19 23:54:10ID:???
>>886
カポコンの言う事ですから!残念!!
0888nobodyさん04/11/20 00:03:07ID:???
喝っ!・・・・・ポコ〜〜〜〜ン・・・
0889nobodyさん04/11/20 00:16:24ID:???
発音はイネーブルだろ。英語勉強しなおせ
0890nobodyさん04/11/20 00:23:38ID:???
何度注意しても タイトルを titole にしてくるデザイナーがうちにいるよ orz
↓次の質問いってみようか
0891nobodyさん04/11/20 00:29:02ID:???
ループに使う変数をroopってするやつもうちの周りにいるな
whileループ使うよりfor使えばいいのに
0892nobodyさん04/11/20 02:03:29ID:lZ7mI+hy
すみません
プログラム経験まったくない初心者で今日からPHPを勉強し始めました。
まだ本当の初心なのですが、
$x = 1;
$a = 2;
$b = $a + 3 * $x;

print("計算結果は".$a+3*$x."です<br>");
print("計算結果は".$b."です<br>");

としたときに

3です
計算結果は5です

と表示されるのはなぜなのでしょうか?
いろいろ調べてみたのですがわかりません。
教えていただけないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています