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

【PHP】質問スレッド Part15

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/03/07 02:03ID:???
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
0448nobodyさん04/03/17 04:58ID:???
未登録ユーザの表示名設定欄に /></td></tr><input type= 出るのはなぜですか?
テンプレートセット・マネジャー ≫≫ defaultでこれ( /></td></tr><input type=)を定義している場所がわかりません・・・
具体的に未登録ユーザの表示名が定義されているファイルはどこでしょうか?
変数を入力する( /></td></tr><input type=)のファイルと、代入先が解れば自力で直せそうなんで教えてくれませんか?
多分自分の予想だとここ(変数を入力する( /></td></tr><input type=)のファイル)のどこかの整合性がとれていないと思うのですが・・・
なにかが欠落してるのかもしれません
お力をお貸しください
0449nobodyさん04/03/17 05:00ID:???
>448
スマソ。XOOPSのHPやってます。不具合があるので解る方レスお願いします
0450nobodyさん04/03/17 05:21ID:???
>>449
go away.
http://pc2.2ch.net/test/read.cgi/php/1067311026/l50
0451nobodyさん04/03/17 09:30ID:k72f02s2
// CSV出力
Header("Content-disposition: attachment; filename=hoge.csv");
Header("Content-type: application/octet-stream; name=hoge.csv");
$str = "hoge,hoge";
print ( "$str" );

現在このようにしてcsv出力を行っていますが、
「ファイルのダウンロード」ダイアログが出てきて、保存をクリックすると
単純にPCに保存ができます。
開くをクリックするとまた「ファイルのダウンロード」ダイアログがでてきて、
もう1度開くをクリックすると今度はテキストエディタでcsvファイルが開きます。
なぜ2度ダイアログが出てくるのでしょうか。
1回で開くを実行できないでしょうか。
0452nobodyさん04/03/17 10:00ID:???
>>451
PHPに関係なし
045340204/03/17 10:48ID:???
>>427ありがとうございます、

・・・・?何で動かなかったんだろう・・・(´д`)
とにかく助かりました。
HTTPやネットワークプログラミングについて、もう少し詳しく勉強してみます。
0454nobodyさん04/03/17 10:48ID:???
未登録ユーザの表示名設定欄 ってどこだよ。
0455nobodyさん04/03/17 11:28ID:6/A8lM/E
ブラウザのクッキー一覧を参照することってできますか?
0456nobodyさん04/03/17 11:49ID:???
そんな事出来たらヤバイだろ
0457nobodyさん04/03/17 11:50ID:???
>>455
>>452
0458nobodyさん04/03/17 12:06ID:???
>>457
「PHPから」ってことでないかな?
0459nobodyさん04/03/17 12:24ID:???
>>458
どっちにせよサーバ側から通常の方法で
「ブラウザのクッキー一覧を参照」は無理。
0460nobodyさん04/03/17 17:11ID:6/A8lM/E
php.iniで設定せずにphpファイルのソースから
session.gc_maxlifetimeなどの指定はできますか?
0461nobodyさん04/03/17 17:23ID:???
>>460
マ(ry
0462nobodyさん04/03/17 17:24ID:???
>>460
session.use_trans_sid以外は、PHP_INI_ALLだから可能。
http://www.php.net/manual/ja/ref.session.php
マニュアルも読めんのか?
0463nobodyさん04/03/17 20:15ID:6/A8lM/E
ブラウザを閉じても1時間は有効であるように、
ini_set( 'session.cookie_lifetime' ,3600 );と記述しました。
書き方がおかしいでしょうか?
この書き方では、設定変更は出来ないようです。
0464nobodyさん04/03/17 20:52ID:dMGK56zp
質問させてください。
HTMLファイルのセレクトメニューの値を
PHPファイルのセレクトメニューに反映させる方法をどなたかご教授ください。
宜しくお願いします。
0465nobodyさん04/03/17 20:55ID:???
>>464



          h       a       i        ?




0466nobodyさん04/03/17 20:56ID:???
>>463
お父ちゃんな、マニュアルも読まん子は好きやないねんけどな。
<?php
ini_set('session.cookie_lifetime', '3600');
// 引数は数値で書いても型変換されるけど、正しくは文字列。
phpinfo();
?>
として鯖に置いて確かめてみ。普通は特に変更不可にはしてない筈。
確認しても駄目なら管理者に問い合わせ。
0467nobodyさん04/03/17 21:02ID:???
>>464
hai? って感じだが、<select><option>の特定のoptionを選択状態で表示したいって話なら、
phpに関係なくHTMLの話やね。<option selected>item のようにselectedをつけりゃいい。

どのoptionにselectedを付けるか、つーのはプログラマである君がゴリゴリ書く仕事やね。
0468nobodyさん04/03/17 21:42ID:???
>>467
レスどうも。
もちろんserectedはわかるんだけど、
やっぱゴリゴリ書かなきゃなんねえのですか。
ありがと、今からゴリゴリしますわ。
0469nobodyさん04/03/17 21:46ID:???
間違い
selected
恥ずかしいっす。
0470nobodyさん04/03/17 21:48ID:6/A8lM/E
463の続きです。
Local Valueは3600に変わるのですが、Master Valueは0になっております。
Master Valueも3600には変わらないのでしょうか?
0471nobodyさん04/03/17 21:59ID:???
>>470
かわらん。
0472nobodyさん04/03/17 22:16ID:???
run-tests.php ってどうやって使うの?
0473nobodyさん04/03/17 22:27ID:HqRKwDEV
phpとmysqlで掲示板を作っています。(ローカル)

『表示』とか『貼り付け』とかが文字化けするんですけど、
なぜでしょうか?

phpのコードにはmetaタグでShift_JISとしてまして、
mysqlのdefault-character-setはsjisにしてあるんですけど。
0474nobodyさん04/03/17 22:57ID:???
shift_jisの文字コードだと
表 -> 95 5C
貼 -> 93 5C
5Cつーのが目に付くと思うんだけど、これは「\」の文字コードなのよ。
で、\つーのはメタ文字とか言って続く文字の1バイト目をエスケープしちゃうわけよ。
addslashesやmagic_quotesをゴニョゴニョして対処する方法もあるけど、結構めんどい。
shift_jisでしか扱えない文字をどうしても使いたいって時を除いては
EUCでスクリプトを書くのが楽って言われるわけやね。
画面表示のタイミングでEUCからshift_jisに変換できるしEUCでやっとけばええんでないの?
0475nobodyさん04/03/18 00:05ID:???
>>470
そりゃMaster Valueは、php.iniで変えるもんやからな。
つか色々自分でやって試してみなよ。鯖借りてるとしても、
ローカル(Windowsでも良い)に似たような環境作って。その方が飲み込み早い
# 持ってなかったら、もう一台ぐらい中古の安いの買えれ。
0476nobodyさん04/03/18 00:08ID:???
>>473
metaタグのShift_JISなんて気休め。
ちゃんとPHPのHTTP出力をShift_JISに設定汁
0477nobodyさん04/03/18 01:43ID:???
今更だとは思うが>>8のエラーの原因って鯖の設定じゃないのか?
LAN内からしかアクセスできないとか。
もしくは開発をローカルでやっててURLを127.0.0.1のまま携帯でつなごうとしてたり。
0478nobodyさん04/03/18 02:01ID:pqPZG/Ug
会員制のサイトに登録したとき、アルファベットに数字混じりのユニークIDが
発行されるところがありますけど、あれはどうやって決められてるものなんでしょうか?

登録時の時間とか、連番とかを、(方法はわからないけど)別の数字や文字に置き換えてるんでしょうか。
そういう処理ってPHPでもできますか?
0479nobodyさん04/03/18 02:55ID:GIO+BTKS
文字列がすべて全角カナの場合のみ真(または負)を返すようにするは
mb_convert_kanaをどのように使えばいいのでしょうか?
0480nobodyさん04/03/18 03:32ID:???
>>479
$ren = "文字列";
mb_convert_kana($ren, "c") = $ren2;
if(mb_strwidth($ren) == mb_strwidth($ren)){
 TRUEの処理
}else{
 FALSEの処理
}
すまぬ…折れの頭脳ではこれが限界だ…
0481nobodyさん04/03/18 07:14ID:???
>>479
mb_ereg("^[ァ-ヶ]+$",$str)
0482nobodyさん04/03/18 08:00ID:???
>>478
uniqid("")
0483nobodyさん04/03/18 13:46ID:???
003<>aiueo
001<>kakiku
002<>ai-n
003<>hoge
002<>afe
001<>unko

例えばこのようなログファイルを読み込むとき、
先頭の番号に準じて配列に格納するにはどうしたらいいでしょうか?
この場合、
$arr_001 = array("kakiku", "unko");
$arr_002 = array("ai-n", "afe");
$arr_003 = array("aiueo", "hoge");
といったような感じにしたいです。
0484nobodyさん04/03/18 14:17ID:???
>>483
かなり変態なソースの気もするが・・・
$nに番号、$vに値を収納したとして下記をレコード分回す

$array_name="arr_".$n;
if(!isset($$array_name))$$array_name=array();
array_push($$array_name,$v);

可変変数の配列に代入するにはarray_pushが必要なようです。ベンキョウニナリマシタ
0485nobodyさん04/03/18 14:23ID:???
>>483
本当にそんなログファイルフォーマットでいいと思っているんですか?
0486nobodyさん04/03/18 15:05ID:???
>>484
ありがとうございました!
0487nobodyさん04/03/18 17:39ID:???
>>483
$arr[ $num ][] = $name;
でいいじゃん。だめ?
0488nobodyさん04/03/18 21:39ID:+47BygHQ
すみません、質問です。
現在、配列を特定の条件でマージしようとしています。
マージの関数はarray_mergeとarray_merge_recursiveを試してみたのですが
思ったような処理をすることが出来ません。
usortの用に比較関数をユーザー定義できるものって無いのでしょうか?
0489nobodyさん04/03/18 21:53ID:XqncjgjW
質問かぶせて恐縮ですが、phpからCで書いたプログラムを実行して、戻り値をphpで利用したいんですが、
cのmain関数のreturn()に戻したい値を入れてもどこに戻ってるのかわかりません。どうすればよいか教えて
くださいまし。
0490nobodyさん04/03/18 22:30ID:???
>>488
「特定の条件」も「思ったような処理」も知らせずに、
俺たちに何をしろと?
0491nobodyさん04/03/18 22:34ID:???
>>487
ありがとう(*´・_・`*)
0492nobodyさん04/03/18 22:43ID:???
>>482
あー、そんなのあったんですね。
よく調べもせずにすいませんでした。ありがとうございます。
0493nobodyさん04/03/18 22:44ID:???
>>489
system()で呼び出せば、第二引数で指定した変数に入る。
0494taku04/03/18 23:08ID:dRleo8tv
すいません質問です
PHPで日本語メール送ると文字化けが起こります。
mb_send_mail関数の前にmb_language関数で
mb_language("japanese");を指定すると
件名と本文がエンコードされて文字化けが起こらないように
なるみたいですが何度か試したのですが文字化けが起こりました。
レンタルサーバーですので問い合わせた所
「mb_send_mail関数とmb_language関数ともに有効ですがEUCーJPで
動作している為メールの場合そのままでは文字化けを起こして
しまうようです。自動変換機能をONにしましたので再度ご確認下さい。」
と返答がありましたが、いまいちわかりません。
何か良い解決方法ありましたら教えて下さい。<(_ _)>

ちなみにテストしてたのは↓のような簡単な構文です。
<?php
$to_addr = "***@yahoo.co.jp";
$title = "テストメール";
$body = "テスト";

mb_language("japanese");
if(mb_send_mail($to_addr,$title,$body,'From:
[email protected]')){echo"
送信成功";}else{echo"送信失敗";}
?>
0495nobodyさん04/03/18 23:18ID:v217X1kZ
JISに変換して送ればいいんじゃない?

mb_send_mail($to_addr, mb_convert_encoding($title,"jis","euc-jp"), mb_convert_encoding($body,"jis","euc-jp"),'From:[email protected]')
0496taku04/03/19 00:07ID:zEoQqiAa
>>495
早速のご返答どうもです。試したのですけど、文字が変換されてる
らしいのですが、届いたメールには文字化けではなく
文字が削除?(空欄状態です)されていました。
うーむ、となるとサーバーの設定がまずいのですかねぇ?
何か他に良い案がありましたら教えて下さい。<(_ _)>
0497nobodyさん04/03/19 00:28ID:???
>>494
PHP のバージョンは?
PHP の一部のバージョン(確か PHP 4.3.2 から PHP 4.3.3 くらい)は mb_language() が
正常に働かなかったような気が。

php.ini の設定が

mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP

になっていれば mb_language('Japanese') はなくても大丈夫だったと思うけど。
049848804/03/19 01:34ID:Ll14L7j+
>>490
いえ、この場合、特定の条件や処理の話はたんなる比喩で

「usortのように比較関数をユーザーが定義できる、マージ関数はあるのか?」

という事が質問の趣旨のつもりでした。
わかり難くてすみません。
0499nobodyさん04/03/19 02:10ID:nZ+iMlnl
ODBC経由でAccessのファイルからデータを取得したいのですが、
例えばフィールドサイズがテキスト型で20のデータを読み込もうとすると、
全角だと10文字までしか取得できません(半角なら20文字読めます)。
10文字以降はゴミがついてきます。

odbcのアクセスにはodbc_result()、odbc_exec()関数などを使用しています。
どなたか教えてくださいませ。
0500nobodyさん04/03/19 02:38ID:???
>>498
だから、どういうマージがしたいんだ?
俺にはさっぱり分からんぞ。
みんなは分かるのか?
0501nobodyさん04/03/19 02:49ID:???
さっぱりわからん
0502nobodyさん04/03/19 09:33ID:???
つまり「usortのように比較関数をユーザーが定義できる、マージ関数はあるのか?」って事だ
0503nobodyさん04/03/19 10:13ID:???
>>498
無い
0504nobodyさん04/03/19 10:27ID:???
>>503
うぅ、ヤッパリ無いんですか・・・自作します。
みなさんありがとうございました。
0505nobodyさん04/03/19 12:10ID:jbsetE8t
DBのデータをテーブル形式で表示させています。

そのとき、1段ごとで、色を変えたいのですが可能でしょうか?
0506nobodyさん04/03/19 12:28ID:???
てかDB全く関係なくね?
0507nobodyさん04/03/19 12:40ID:???
>>505
ゴリゴリ、お逝きなさい。
0508nobodyさん04/03/19 13:04ID:jbsetE8t
すみません、PHPは使って作業しております。
PHPでDBにあるデータを表示させています。

そして、テーブル形式で表示させています。

そのとき、1段ごとで、色を変えたいのですが可能でしょうか?
0509nobodyさん04/03/19 13:11ID:???
>>508
なんでまた同じ事書くの・・・
0510nobodyさん04/03/19 13:12ID:???
>>508
だからDBは関係ないっての。ゴリゴリ逝けっての
0511nobodyさん04/03/19 13:17ID:???
制御構文使って
テーブルの行を順々に異なる色にする程度の知識レベルがあれば可能

DB無関係

これが理解できなかったら、かなり不可能
0512nobodyさん04/03/19 13:39ID:???
>>508はHTMLの仕様が解ってないとみた
0513nobodyさん04/03/19 14:25ID:???
行数カウントして(カウント%2)を見てtrにclass振るだけ。
プログラミングの基礎だ。
0514nobodyさん04/03/19 15:10ID:???
%2のときは&1にするのがプログラミングの基礎だと思うのは
漏れだけなんかなぁ。もうそんなシビアな時代じゃない?
0515nobodyさん04/03/19 15:58ID:???
>>514
うん
0516nobodyさん04/03/19 16:10ID:???
え、じゃー

 $a = $b / 2;

なんてのを

$a = $b >> 1;

にしたがるのも漏れだけ?まぁこれは文脈によってはダメだけど。
0517nobodyさん04/03/19 16:16ID:???
俺はビット演算とか必要な時しか使わないな
0518nobodyさん04/03/19 16:27ID:???
Cの時は、そんなもんコンパイラが最適化すると思ってる。
PHPの時は、そんなもんインタプリタ言語で気にするのが変と思ってる。

結論として、文脈で分かりやすいほうの記述をとるな
もうそんな時代じゃないというのにかなり賛成
0519nobodyさん04/03/19 16:59ID:???
>>395の再うp希望

ていうか本家のファイルはいつ直るんだー!!
0520nobodyさん04/03/19 17:32ID:???
あと、マニュアルのどこが変わった、という情報ってどこかで得られる?
PHP-DOC を見た感じ diff だけだし。
0521nobodyさん04/03/19 17:38ID:???
>>520
CVS
ttp://cvs.php.net/cvs.php/phpdoc-ja
052252104/03/19 17:39ID:???
>>520
NEWS の方がよかったかも
ttp://news.php.net/group.php?group=php.doc.ja
0523nobodyさん04/03/19 18:31ID:???
>>508 は
「1段ごとで、色を変えたいのですが可能でしょうか?」
つまり、一段ごとに"任意の色"を付けたいのかもしれん。
→ テーブルに任意の色保持するフィールド作れよ。
0524nobodyさん04/03/19 19:37ID:???
>>521-522
ありがとうございました。
NEWS の rss を購読します。
0525nobodyさん04/03/19 20:55ID:EiWH/2Wl
なんか PHP ってむっちゃ遅くありませんか。
Ruby のライブラリを移植したのですが、
参照渡しにしているにもかかわらず、
処理に 10 倍以上の時間がかかります。
正規表現が悪さをしているんでしょうか?
0526nobodyさん04/03/19 20:58ID:???
既出だったらごめんなさい。
CGIのjcode.plに相当する関数はPHPにありますか?
0527nobodyさん04/03/19 21:04ID:???
>>526
あります。
0528nobodyさん04/03/19 21:05ID:???
>>525
そうかもしれません。誰が速いと言ったのですか?
0529nobodyさん04/03/19 21:58ID:???
>>526
http://jp.php.net/manual/ja/ref.mbstring.php
>>527
神内さん、乙。
0530nobodyさん04/03/19 22:04ID:mkcYvZds
>>526
http://www.google.com/search?q=jcode.php&hl=ja&lr=lang_ja
053148904/03/19 22:21ID:pIHWidCq
>>493
 ありがとうございます。とりあえず0−255まで値が渡るようになりました。
重ね重ね恐縮ですが、256より大きな数はどうすればよいでしょうか。
0532nobodyさん04/03/20 00:31ID:???
>>531
ネタですか?それともマジですか。
#何のC使ってるのyo
0533nobodyさん04/03/20 00:36ID:???
>>531
標準出力にだしてexecなりpassthruで拾えば。
0534nobodyさん04/03/20 00:54ID:???
そういえば微妙にかゆかった疑問なんだけど、$fpみたいな変数が必要になる事があるけど、
沢山必要になったときどういう風に変数名付けてる?
俺まったくの行き当たりばったりだから$fpxとか$fp2みたいなやる気も統一性もない名前ばかりなんだが
0535nobodyさん04/03/20 00:58ID:2jbtOFQU
配列にする
0536nobodyさん04/03/20 01:13ID:???
参照渡しと引数のデフォルト値設定って
両立できないんでしょうか。

function hoge(&$foo = "bar"){
    // ...
}

こういう書き方をするとエラーが出て困っています。
0537nobodyさん04/03/20 01:36ID:???
>>536
( ゚Д゚) ポカーン
$hoge =& "funi";
やってみろよ。というかそんなコード書くな。
0538nobodyさん04/03/20 01:38ID:2jbtOFQU
参照私の意味がないような。
053953604/03/20 01:40ID:???
そうですか。
こういう書き方はできますか?
動作はするみたいですけど。

function hoge($foo = "bar"){
    //...
}

hoge(&$a);
0540nobodyさん04/03/20 02:34ID:???
……… 自信たっぷりだな。いいから

php -r "$a='hoge';"
php -r "$a=&'hoge';"

ってやって試してみなよ。。
エラーの内容を見れば想像出来ると思うが。
そんなコードが必要になる時点で何か変なんだよ。
054153604/03/20 02:57ID:???
落ち着いてください・・。
ええと…>540さんは、変数に入ってない値への参照を作成することは
できないっておっしゃりたいんでしょうけど、>539は動きますよ。
だって、変数に入ってない値への参照を作成していないのですもの。

それに私は>539みたいなコードが必要だから、
そういうコードを書いているのですけど…。
参照渡しの引数にデフォルト値を設定することの、何が変なのかよくわかりません…。
0542nobodyさん04/03/20 03:31ID:???
http://headlines.yahoo.co.jp/hl?a=20040320-00000097-myc-sci
━ヽ(´c_`)ノ━
0543nobodyさん04/03/20 08:22ID:0einhvXN
質問です。
requireやrequire_onceを使うと、単に「ソースコードの追加」を行うだけでなく
他のphpの'出力結果'を取り込む事もできるんでしょうか?

読み込み対象のphpがリモートファイルの場合でも可能でしょうか?
054452604/03/20 08:40ID:???
皆さんありがとうございました
0545nobodyさん04/03/20 08:47ID:???
>>543
   〃∩ ∧_∧
   ⊂⌒( ´・ω・)くぜんぶマニュアルに書いてあったでつ
     `ヽ_っ⌒/⌒c
054654304/03/20 08:59ID:???
>>545すみません、fopenを使って自己解決しました・・・
マニュアルも読み足りなかったかもしれませぬ。

しかし、なぜrequireだとwarningが出て、fopenだと出なかったんだろう。

requireを使って外部鯖のphpの出力を取り込むと、「seekingはサポートしてません」
みたいなwarningが出てから一応出力もされるんですが
ファイルポインタ使ってない(つもりな)のに、なんでこんなエラーが出たのだろう・・・

fopenで最初から最後まで書き下すようにしたらなんもエラーは出なかったです。
0547nobodyさん04/03/20 11:26ID:Hxt1FY25
Win + AnHttpdでUTF-8の読み書きはできたのですが、
Linuxの何か + ApacheでUTF-8の読み書きをすると英数字以外が文字化けするんですよ。

php.iniを変更できないレンタルスペースの環境で
UTF-8を読み書き検索したいのですが、
mbstringを使う方法ってありますか?
0548nobodyさん04/03/20 12:42ID:???
>>547
まとめると、
mbstringがインストールされていない鯖でmbstringを使いたいということですか?
■ このスレッドは過去ログ倉庫に格納されています