トップページ⇒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
041240204/03/16 14:28ID:???
>>403
レスありがとうございます、しかしHost:を送ったり、
fputs($fp, "Accept-Encoding: gzip");などとしてみてもだめでした。

一応、Hostを送る場合も送らない場合も「人大杉」の画面は出ました。
でも他の専用ブラウザのようにdatの内容を取得することができなかったです。

phpとあまり関係ないところで間違えてるのでしょうか、、、
もしアドバイス頂ければ、どなたかお願いします。
041336204/03/16 14:37ID:???
>>406
まじ?
じゃあなんでマニュアルに セキュリティのため なんて書いたんだろう
なぞだなぁ
0414nobodyさん04/03/16 16:27ID:???
>>411
Cobaltはパネルを通して管理するスタイルのために
他のUnix系の管理とは異なることも多く、その分 Cobaltの
コミュニティがちゃんと存在するので、そっちいって訊きな。
今のバージョンのPHPのパッケージを作ってる人がいるかもしれん。

純正のやつなら、Cobalt買ったときにメディアが付いて来たろ。
バージョンは古いけど。なけりゃCobaltのサイト(まだあるかな?)
にも置いてあったな。

>散々webを回ったんですが、用語すら難しくてわかりません。
>テルネットやLINUXの知識は皆無なんです。
別にCobaltならtelnetやLINUXの知識はなくてもいいが、
逆にCobalt独自の管理知識しらないとやっていけないぞ。
それを勉強するのに用語が判らないのなら、前提となる
Unixの一般知識も勉強しな。
0415nobodyさん04/03/16 16:44ID:???
ファイルからファイルを読み込んで、指定した文字数を超えると
「..」と語尾につけたいのですが、どのようなスクリプトを書いたらいいでしょうか?
041641504/03/16 16:45ID:???
あ、因みにそのファイルは、半角と全角が混じってます。
0417nobodyさん04/03/16 16:58ID:???
仕様にさえ合えば mb_strimwidth() が楽。
0418nobodyさん04/03/16 17:06ID:???
>>417
できましたー(*´ω`*)ありがとうございました。

PHPには色々便利な関数がありますね
0419nobodyさん04/03/16 17:11ID:???
入力された文字列に2バイト文字があるかどうか判別したいんですが、
正規表現かけるのが定石なんでしょうか?
英語向けサイトで文字化けを防ぎたいのですが。
0420nobodyさん04/03/16 17:32ID:???
>>419
mb_detect_encoding() は?
0421nobodyさん04/03/16 17:33ID:???
echo (mb_strlen($str) != mb_strwidth($str)) ? 'マルチバイト文字有り' : 'マルチバイト文字無し';
0422nobodyさん04/03/16 17:37ID:???
>>421
頭いいな
0423nobodyさん04/03/16 17:48ID:???
>>420
>>421
サンクスです!
>>421で出来ました。
0424nobodyさん04/03/16 18:03ID:6IiWiqvl
掲示板などに書き込む前に
「この文章でよろしいですか?Y/N」みたいなアラートを出したいのですが
vbでいうmsgboxみたいなもの教えてください。
0425nobodyさん04/03/16 18:07ID:???
>>424
ブラウザは何使ってる?
IEならJavaScript使えばいいし
ネットスケープならJavaScript使えばいい
そのほかなら自分で調べるしかないけど
0426nobodyさん04/03/16 18:08ID:???
>>424
JavaScript板に行け
0427nobodyさん04/03/16 18:08ID:???
>>402
<?
$fp = @fsockopen("pc2.2ch.net", 80);
if($fp) {
fputs($fp, "GET /php/dat/1078592587.dat HTTP/1.0\r\nHost: pc2.2ch.net\r\nUser-Agent: Monazilla/1.00\r\n\r\n");
while (!feof($fp) && $o != "\r\n") $o = fgets($fp, 512);
while (!feof($fp)) echo fgets($fp, 4096);
fclose($fp);
}
?>
これで読めるけど。
0428nobodyさん04/03/16 18:15ID:???
>>424
alert出すならJavaScript。板違いなのでぐぐってからWeb制作板へ。
確認画面出すならPHPでできるがな。
0429nobodyさん04/03/16 18:21ID:6IiWiqvl
>>428
確認画面を出したいです。

phpで書いてある掲示板なのでおなじsubmitのところにはjavascriptは無理なのでは?
javascriptの中にphp書くのも不可能じゃないんですか?

たぶん相当バカな事いってると思いますが心を仏にしてお願い致します。
0430nobodyさん04/03/16 18:46ID:???
>>429
お前はまず他人に物を教わる時の作法を覚えてこい
なにが「心を仏にしてお願い致します」だアフォ
0431nobodyさん04/03/16 18:47ID:???
>>429
セッションで値渡したら楽だよ。

んで、確認画面は

<input type="text" name="name" value="<?php echo $_SESSION['name']; ?>">
・
・
・
こんな感じで
0432nobodyさん04/03/16 18:54ID:???
>>429
情報の後出しは良くない

JAVASCRIPTならボタンをSUBMITじゃなくて普通のボタンにして、アラート後OKならSUBMITする関数を呼び出せばいい
PHP側はHTMLを吐き出す際にJAVASCRIPT付きで吐き出せばいい

確認画面にしたいなら.>>431
0433nobodyさん04/03/16 19:05ID:NZM27FO2
ちょっと質問させてください。
リンクとしてセッションを継続する場合は、セッションIDは
新しく生成されないが、セッションの開始のページを
開くたびに、セッションIDがどんどん保存されていくことは
正しいですよね?
0434nobodyさん04/03/16 20:59ID:IotPKUsm
PHPマニュアルをざっと眺めて載ってなかったんですけど、
write.php?target=2
の様な情報って受け取れます?
0435nobodyさん04/03/16 21:05ID:???
>>434
ほぅ?
http://jp.php.net/reserved.variables
043643404/03/16 21:09ID:???
>>435
あら、まあ。
0437nobodyさん04/03/16 21:21ID:???
正規表現かなんかで、
文字列から 複数の指定文字 以外 の文字を 置換する
うまい方法ある?
0438nobodyさん04/03/16 21:32ID:???
>>437
置換するためには、ある文字をある文字に置き換えるという「指定」をするわけだが.....
043943704/03/16 22:21ID:???
>>438
preg_replaceだと、正規表現でマッチする分を置換できるけど
マッチ「しない」分を置換する方法がわかんない
正規表現で否定の指定方法がわかればすむ話かなあああ
0440nobodyさん04/03/16 23:21ID:???
>>439
指定文字列以外なら無理ぽだが、指定文字以外なら出来る。
ABC以外の文字をZに置換。
ereg_replace("[^ABC]","Z",$str);
0441nobodyさん04/03/16 23:23ID:???
文字列となる場合は、
mb_ereg_replaceで条件にマッチするものを削除(mb_ereg_replace("正規表現","",$str);)
してから置換を行えばいいのでは?
0442nobodyさん04/03/16 23:31ID:???
>>441
指定文字列もなくなっちまうじゃん。
一旦、指定文字列とその出現位置を覚えておいて削除し、
残った文字を全て置換後、その文字列を元あった位置に戻すとかすりゃ可能だが。
0443nobodyさん04/03/16 23:54ID:???
>>442
ああそうだった・・・
そりゃ無理じゃろ、何文字目か覚えておいても置換後に文字数が同じにならなけりゃだめだし、、
むずいな
0444nobodyさん04/03/17 00:08ID:???
初心者でつ。
windowsでやっています。

c:\test.php
と表示させたいので
c:\\test…
と入れると
c: est…
と表示されてしまいました。どうしたらいいのか分かりません。教えてください。
0445nobodyさん04/03/17 00:13ID:???
>>444
c:\\\\test
って入れれw
0446nobodyさん04/03/17 00:23ID:???
\tはタブだからか

そういうときはシングルクォートでくくれ
0447nobodyさん04/03/17 01:28ID:???
Windows でも / でいいと思ったが

include_path とかのパス区切りは ; にせんとだめだけど。
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無関係

これが理解できなかったら、かなり不可能
■ このスレッドは過去ログ倉庫に格納されています