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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/05/17 17:14ID:AT+bUkag
・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


抜けているものがあったら補足願います
0412nobodyさん04/05/28 17:24ID:???
>>411
あります!
0413nobodyさん04/05/28 17:25ID:???
Google検索とスレ内検索だけぢゃなく、
マニュアル検索もしてくれい
0414nobodyさん04/05/28 17:31ID:???
>>411
str_pad
0415nobodyさん04/05/28 17:43ID:???
>>411
sprintf
0416nobodyさん04/05/28 17:49ID:???
超ウルトライントロドンみたいな状態になってるな
とオッサン丸出しな事を言ってみる
0417nobodyさん04/05/28 18:09ID:???
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
とありますが、この逆、つまり、
php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上で
デコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
UTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
エンコード後の文字列が%uとuから始まるようにできないのです。
どのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
(または、互換の形式でもかまいません。phpとJavaScriptで共通して使えるエンコード・デコード関数があれば)
0418nobodyさん04/05/28 18:18ID:???
>>412-416
ありがとうございます。

関数へぼ自作しちまいましたよ。トホホ。
0419nobodyさん04/05/28 18:55ID:???
>>417
自分が貼ったリンク先をよく読め
0420nobodyさん04/05/28 19:32ID:???
答えてください。大変困っています。
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
つとありますが、この逆、つま
り、php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上
だとデコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
よくUTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
つまりエンコード後の文字列が%uとuから始まるようにできないのです。
りどのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
(または、互換の形式でもかまいません。phpとJavaScriptで共通して使えるエンコード・デコード関数があれば)
0421nobodyさん04/05/28 20:07ID:???
>>420
縦読み乙
0422nobodyさん04/05/28 20:08ID:???
http://hk2ch2.hp.infoseek.co.jp/cgi-bin/up/source/up0305.jpg
042341704/05/28 22:46ID:???
あ、
http://www.broadband-xp.com/hidesource/escape.html

の
//ネットスケープでもIEのescape関数と同じようにunicodeに変換する関数

を再現すればいいじゃん。というわけで、すみませんでした・・・解決です。
をphpで再現すればよいのかw
042441704/05/28 22:48ID:???
あ、
http://www.broadband-xp.com/hidesource/escape.html

の
//ネットスケープでもIEのescape関数と同じようにunicodeに変換する関数

を再現すればいいじゃん。というわけで、すみませんでした・・・解決です。
をphpで再現すればよいのかw
0425nobodyさん04/05/29 09:13ID:DJKvEK/M
すいません。質問です。

xmlヘッダ(<?xml version="1.0" encoding="UTF-8" ?>)の
version、encoding を取り出したいんだけど、よい方法ありますか?

どなたかご教授お願いします。

0426nobodyさん04/05/29 12:42ID:???
>>425
正規表現
0427nobodyさん04/05/29 15:49ID:???
ここは数ある質問スレの中でも結構ひどい部類に入るな
0428nobodyさん04/05/29 15:59ID:???
PEARのテンプレートを使っているのですが
テンプレート用HTMLの中に書いてある
<? echo "test"; ?>
のようなPHPは実行されないようなのですが
実効するようにはできないのでしょうか?
0429nobodyさん04/05/29 16:06ID:???
結構っつーか、相当酷いよ
0430nobodyさん04/05/29 16:14ID:???
>>428
試しにテンプレートを読み込んでそのままブラウザ出力するスクリプト書いてみ?
それと同じ事だよ。
0431nobodyさん04/05/29 17:45ID:???
> PEARのテンプレート
> PEARのテンプレート
> PEARのテンプレート
> PEARのテンプレート
> PEARのテンプレート
ハァ?
0432nobodyさん04/05/29 18:52ID:???
>>431
むしろハァ?するところが違う。

http://pear.php.net/package/HTML_Template_Flexy
http://pear.php.net/package/HTML_Template_IT
http://pear.php.net/package/HTML_Template_PHPLIB
http://pear.php.net/package/HTML_Template_Xipe

PEARの、どのテンプレートシステムだっつうの。
0433nobodyさん04/05/29 20:22ID:???
別にハァするほどでもないと思うが。
意味は通じるし。
0434nobodyさん04/05/29 22:17ID:???
>>433
じゃあどのテンプレートを使っているか当ててみろよ。
0435nobodyさん04/05/29 23:04ID:???
>434
ウププ ほんとに言っちゃっていいの?!
0436nobodyさん04/05/29 23:23ID:???
>>435
もう判ったから言わなくていいよ。
0437nobodyさん04/05/30 01:09ID:???
テキストファイルの中を配列に読み込んで、文字列を追加するスクリプトを書いているんですが、
テキストファイル中の改行がそのまま文字列として、配列に格納されてしまう為、追加
したい文字列を同じ行に表示させることが出来ません。アドバイスお願いします。

恥ずいですがソースは以下で、環境はエディタがjvimでOSがFreeBSDでPHPは4.2です。

$log = file('log.txt');
for ($i = 0; $i < count($log); $i++)
{
$ex = explode(",", $log[$i]);
if ($ex[0] == $_POST[hoge])
{

ereg_replace ("/(\r\n)|\r|\n/","",$ex[$i]);
$add = ("$log[$i]" . "$a" . "," . "$b" . ",");
}
}
$fp = fopen('log.txt', 'w');
fputs($fp,$add);
fclose($fp);
}
0438nobodyさん04/05/30 02:02ID:???
>>436 何をしたいのかよくわからないけど
やりたい事がいくつかできてないんじゃない?
ereg_replace ("/(\r\n)|\r|\n/","",$ex[$i]);
$add = ("$log[$i]" . "$a" . "," . "$b" . ",");
}
}
$fp = fopen('log.txt', 'w');
fputs($fp,$add);
fclose($fp);
}
を
$log[$i] = trim($log[$i]).$a.",".$b.",\n";
}
}
}
$fp = fopen('log.txt', 'w');
fputs($fp,implode("\n", $log));
fclose($fp);
かな?最適なコードじゃないけども
0439nobodyさん04/05/30 02:14ID:???
ゴメン、>>438ですがレスアンカー間違い。正しくは>>437ですた。
しかも波括弧の数が違うから場所は変えなくてよかた。
激しくすまそ
0440 ◆AngelH/kMI 04/05/30 02:54ID:???
うう。最近見てなかった・・・。


超遅レスで申し訳ないけどPHPでベンチマークなら
http://www.blueshoes.org/en/developer/php_bench/
こういう検証サイトがあります。

参考になるかと。
0441nobodyさん04/05/30 04:31ID:???
カポコンとこにもあったよ!PHPじゃーないけど重要と思う。

ttp://cgi.f13.aaacafe.ne.jp/~mugen/perlvsphp/page8.htm
0442nobodyさん04/05/30 07:05ID:???
>>441
いつもの自演乙
0443nobodyさん04/05/30 09:26ID:wDkFum9g
.htaccessでのphp_flagの設定が許可されていないのですが、
register_globalsをoffにする方法はないでしょうか?
変数の扱いに気をつけているつもりですが不安なので、
できればoffにしたいのですが。
044442504/05/30 10:08ID:???
>>426
やはり自分で正規表現書くしかないですか・・・。
Parserで version、encoding を取れるのがあれば、
と思ったのですが。
もし、取れるParserがあったら教えてください。
0445nobodyさん04/05/30 11:14ID:???
xml_get_option()でとれそう!
とか書いてみる。
0446nobodyさん04/05/30 13:01ID:???
>>444
versionとencodingだねかんだろ。
正規表現でやればかんたんじゃん。
そんなにたいそうなことか。
0447nobodyさん04/05/30 13:40ID:???
質問よろしいでしょうか。
phpadminを設置したのですが、
「The configuration file now needs a secret passphrase (blowfish_secret).
」
というエラーが出ます。
パスやサーバーの設定は何度も確認しましたが、間違いがあったのでしょうか。
どうぞ宜しくお願い致します。
0448nobodyさん04/05/30 13:45ID:???
スレ違いならすみません。質問なのでageます。
0449nobodyさん04/05/30 13:52ID:???
>>447
エラーメッセージをお読みになりましたか?
0450nobodyさん04/05/30 13:58ID:???
>>438

trimで出来ますた。ありがとう
あと確かにやりたいことがいくつも出来てませんですた。
0451nobodyさん04/05/30 18:37ID:???
>>443
register_globals:PHP_INI_PERDIR/PHP_INI_SYSTEM
方法はない。

自分で小手先でどうにかしようとする前に
管理者になんとかしてもらう/させるべき事項。
045244404/05/30 21:47ID:???
>>445,446
分かりました。正規表現でやってみます。
助言ありがとうございました。
0453nobodyさん04/05/30 22:38ID:???
前回の結果を書き込んだテキストファイルを読み込む場合どうしたら前回の結果を
表示出来る様になりますか?

<?php
$pointer = fopen("rireki.txt","r");
$fileline = fgets($pointer);
fclose($pointer);

if文
$rireki="格納する文字"

$pointer = fopen("rireki.txt","w");
flock($pointer,LOCK_EX);
fputs($pointer,$rireki);
flock($pointer,LOCK_UN);
fclose($pointer);
?>

上のイメージで作りましたがどうもエラーが起きてしまいます。
どこにprint($rireki)をつくればいいのでしょうか?
様々な個所に入れて試してみましたがエラーになりました。しかしif文の後に入れると
今回の結果が表示されてしまいますので困っています。
どなたか教えてください。
0454nobodyさん04/05/30 22:54ID:???
どうしてエラー文を一緒に書かないのですか
0455nobodyさん04/05/30 22:54ID:???
>>453
どんなエラーが出たのか晒せ。
あと、if文云々っつーならif文も。
0456nobodyさん04/05/30 23:16ID:???
>>453
何をしたいのかいまいち判らんが。
普通に前回の内容(1行)が入っている
$filelineを表示すれば良いのでは?

print($fileline);
$rireki="格納する文字"; //終端の;が抜けてたけど?
045745304/05/30 23:24ID:???
すいません自己解決できました。よく文を見直してみたらfilelineで表示できる
事に気づきましたwすいませんでした。
あとついでといってはなんですが今アクセスカウンタを作っているのですがセション
をつかってアクセスカウンタの数値を前にアクセスした人がリロードしても増えない
ようにするにはどうしたらいいのですか?
質問君みたいですいません。
0458nobodyさん04/05/30 23:32ID:???
>>457
質問君つうよりそれ以前の問題。
リロードで増やさないというのは、何をリロードとみなすかによる。
カウンターなんて、腐るほど転がっているから、そのソースを
参考にした方がいいんでね。
045944304/05/31 00:10ID:???
>451
やはり無理なのですね。
管理者に相談してみることにします。
ありがとうございました。
0460nobodyさん04/05/31 14:07ID:2SJTqa7f
新規質問なのであげます

phpが動きません
状況は下記のURLの通りで、<?phpスクリプト?>を解釈してくれません
ttp://www.php.net/manual/ja/faq.installation.php#faq.installation.blankscreen

Linux+Apache1.3 httpd.confには
マッピング、モジュールのロードは記述してあります
おしえてエロイ人
0461nobodyさん04/05/31 14:26ID:???
その通りの症状ならそこに書いてある通りに対処しろよ
0462nobodyさん04/05/31 14:31ID:???
字が読めないならテキスト読み上げソフト入れればいいじゃん
0463nobodyさん04/05/31 14:31ID:???
日本語が分からないなら翻訳ソフト使え
0464nobodyさん04/05/31 15:30ID:???
>>461
リンクさきにはインストール時の設定とかを
見直せって書いてあるんだけど、変なところが
見つけられないですよ
0465nobodyさん04/05/31 15:49ID:???
>>464
で、どうしろと?

インストール時の設定(若しくは手順)や環境くらいは説明したら?
このスレのエロイ人はエスパーじゃないんだから。
0466nobodyさん04/05/31 15:50ID:???
>>464
みんなが言ってることを理解してるのか?
なんべんでも見直せ。
おまいの設定がまずいにきまっとる。
せっていすらできんやつが鯖たてるな
!
0467nobodyさん04/05/31 15:59ID:???
Apache再起動しろ。
0468nobodyさん04/05/31 17:11ID:???
/**********

質問者たちへ

ここで聞いてまともな返事が返ってくると思うな

**********/
0469nobodyさん04/05/31 17:26ID:???
<br />って

なんで<br>じゃないのさ?
0470nobodyさん04/05/31 17:36ID:???
nl2brの話かい?
HTMLで<br />と書いて困ることはないが、XHTMLで<br>だと困るからだろ。
0471nobodyさん04/05/31 17:37ID:???
自サイトからのOUTは簡単にわかるのですがINはどうやってわかるのですか?
index.php?id=aaa みたいにやらない方法ってありますか?
0472nobodyさん04/05/31 17:42ID:???
おーい、誰か翻訳してくれ
047347104/05/31 17:49ID:???
解決しますたw
0474nobodyさん04/05/31 18:19ID:???
既出だったかもしれないけど、
$str = "ABCDE";
を
$arr = array('A','B','C','D','E');
に分解する最適な方法を教えてください。
0475nobodyさん04/05/31 18:32ID:???
$str = "ABCDE";
$arr = array($str{0},$str{1},$str{2},$str{3},$str{4});

はい、次!
047647404/05/31 18:39ID:???
�dクス。けど、その{}ってどういう仕組みなの?
047746404/05/31 19:21ID:???
>>465
漏れが建てた鯖じゃないのよ
色々いじられててよく分からんし
再インスコはできないし。

でもまあ、テキスト読み上げソフトで何とかなったよw
�dクス
0478nobodyさん04/05/31 19:40ID:a1bq18t+
>>474
$arr = explode("",$str);

これでできたら、楽だと思ったことある
0479nobodyさん04/05/31 19:55ID:???
preg_splitの何が不満?
0480nobodyさん04/05/31 19:56ID:???
>>478
$arr = preg_split('//', $str);
とか。
問題は、前と後ろに余分な配列が入ることだけど。
array_pop() と array_shift() で外すようにすれば使えるかも。

まあ、今回の場合はこれで十分だと思うけど。

$arr = array();
$len = strlen($str);
for ($i=0; $i<$len; $i++) {
    $arr[] = $str[$i];
}
0481nobodyさん04/05/31 19:58ID:???
<br>〜</br>でこっからここまで改行って意味わからんから。
0482nobodyさん04/05/31 20:00ID:???
$str='ABCDEFGHl';
preg_match_all('/./',$str,$match);
print_r($match[0]);

ダメか・・・・
0483nobodyさん04/05/31 20:01ID:???
>>480
まぬある読めば、PREG_SPLIT_NO_EMPTYと、例まで出して説明してありますが
それでもそんなややこしいことしますか?
0484nobodyさん04/05/31 20:13ID:???
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
0485nobodyさん04/05/31 20:40ID:???
>>481


               何     の     話     だ     ?



0486nobodyさん04/05/31 21:36ID:LIfE6g2z
$str = "111 222 333"
などスペースで区切られた数字をそれぞれ配列として変数にぶち込みたいのですが
どうすればいいでしょうか
0487nobodyさん04/05/31 21:38ID:???
>>486
ちょっと上のスレくらい読んでよ
explode()
0488nobodyさん04/05/31 21:40ID:???
>>487
わざとなんじゃないの?
0489nobodyさん04/05/31 21:44ID:???
そんなやつにはきついパンチをぶち込んでやれ
0490nobodyさん04/05/31 21:46ID:Mjcj/gqf
phpで書かれた、
カスタマイズ容易な
ウェブメールプログラムがあれば教えて下さい。
「php ウェブメール」で検索しても
結果が山ほど出てきて絞り込めません。
よろしくお願いします。
0491nobodyさん04/05/31 21:54ID:???
>>490
板違い

【CGI】こんなCGI探してますver.13
http://pc5.2ch.net/test/read.cgi/hp/1081608108/
049249004/05/31 21:56ID:???
>>491
ありがとうございます
そちらで聞いてみます
0493nobodyさん04/05/31 22:48ID:???
$start = date("Y/m/d H:i");
$end = date("Y/m/d H:i");

$startから$endまでの経過時間を知りたいです。アドバイスよろしくお願いします。
0494nobodyさん04/05/31 22:50ID:???
それは計算式を教えてくれと言うことか?
なら板違いだぞ。
0495nobodyさん04/05/31 22:51ID:???
>>493
よほど遅いマシンでなければ間違いなく0秒。
0496nobodyさん04/05/31 22:54ID:???
>>494

どこにいけばいいっすか?
0497nobodyさん04/05/31 23:25ID:???
>>470
ありがたう
タグで検索しても引っかからないから助かりました。
0498nobodyさん04/05/31 23:57ID:???
スクリプトから他スクリプトの結果を取得するにはどのようにすれば良いでしょうか?
例
http://hoge.hoge/a.php
の内部で
http://hoge.hoge/b.php
の結果を取得して表示したい。
0499nobodyさん04/06/01 00:06ID:???
>>496
マジレスすると。
http://science3.2ch.net/test/read.cgi/sky/1039275406/1-

マニュアルが読めてない(date関数の意味を理解していない)節
があるので、再度読み直してもわからない場合は語学板。
勘違いだとわかった場合は数学板。未読だった場合は社会学/哲学板など。

>>498
includeとかfopenでhttpストリームを指定して取得する。
0500nobodyさん04/06/01 00:15ID:???
自作サーバでdebian+PHP4.3.6+Apache2の環境で動かしています。
sessionを使ってみようと思ったのですが、

<?session_start();
if (!session_is_registered('count')) {
session_register("count");
$count = 0;
}
else { $count++; } ?>
<html><body>
<a href='<?php echo $PHP_SELF ."?PHPSESSID=" . $PHPSESSID ?>'>
<?php echo $count ?>
</a>
</body></html>

これだけなのですが、動きません。
エラーは一切でず、$PHPSESSIDは空っぽです。
何が原因だと考えられるでしょうか?

phpinfoでは
Session Support enabled となっており、
コンパイルオプションは以下のみです。
'./configure' '--enable-mbstring' '--enable-mbregex'
'--with-apxs2=/usr/apache2/bin/apxs' '--with-mysql'
よろしくお願いします。
0501nobodyさん04/06/01 00:43ID:???
<?seesion_start();
これはいいの?
0502nobodyさん04/06/01 00:44ID:???
$ar = stat('test.php');
echo $a['ctime']; //またはmtime?

Windows上でためしたところ、上記でtest.phpファイルそのものの最終更新時刻がわかりますが、
Unix上では上記スクリプト実行のたびに更新時刻もどんどん変わってしまいます。
これはOSのし様ですか?
050350004/06/01 00:57ID:???
>>501さん
<?php
session_start();
とちゃんと書いてます。ごめんなさい。
基本的に文法ミスは無いはずです。
違うサーバではきちんと表示されることがわかりました。
なんででしょう?
# ここに張るのに適当に短くしたつもりが・・・
0504nobodyさん04/06/01 02:02ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
0505nobodyさん04/06/01 03:03ID:???
>>502
時刻だけならfilemtimeでよくない?
鯖で見てないからどうなるかしらんけど。
0506nobodyさん04/06/01 03:05ID:???
>>493
文字日付→UNIXタイムに変換する関数がある。
0507nobodyさん04/06/01 04:26ID:???
>>505
いや、どちらにしてもctime/mtimeの取得方法が
内部で変わるわけではないので、
>Unix上では上記スクリプト実行のたびに更新時刻もどんどん変わってしまいます。
>これはOSの仕様ですか
が、そもそも変な感じ。
050850204/06/01 04:45ID:MqX7wJyb
ありがとう。
実行のたびに更新時刻が変わったのは何かの勘違いでした。
0509sakky04/06/01 13:57ID:aOyX5NXt
テンプレート形式にしたくて
$a = "abc<-#email#->cba";
$email = "[email protected]";
$b = ereg_replace("(<\-#)([a-z]+)(#\->)","$\\2",$a);
print($b);
という形式でテストしてみたのですが、置換したところが、$emailと出て、
変数として扱ってくれません。どうしたら変数として扱ってくれる置換が
できるでしょうか?教えてください。お願いします。
0510nobodyさん04/06/01 15:31ID:???
できないなら一行で書こうとするな。変数名はpreg_matchで抜き出してから使え。
0511sakky04/06/01 16:01ID:aOyX5NXt
アドバイスありがとうございます。おかげでできました。
■ このスレッドは過去ログ倉庫に格納されています