【PHP】下らねぇ質問はここに書き込みやがれ 22
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/06/08(木) 05:09:28ID:5gGJKVO4ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0357nobodyさん
2006/06/15(木) 02:58:44ID:???なんだそれは?Linuxの/なのか?
ならもちろん/がドキュメントルートになってるんだよな?
その「/」に本来入る文字列は「http://〜」になるんだよ。
一応相対パスでも飛べるけど、そのファイル名がブラウザか
らURLをうって見えるものじゃないとダメ
0359nobodyさん
2006/06/15(木) 03:36:07ID:???header("Location: index.php");
でうまくいっちゃったもんだから試したら
"Location: /index.php"やら"Location: /"でも問題なく飛ばせるんで
疑問に思いマスタ
linux apache で / はルートです。
0362nobodyさん
2006/06/15(木) 05:11:09ID:???0363nobodyさん
2006/06/15(木) 05:16:11ID:???0365nobodyさん
2006/06/15(木) 07:44:27ID:???日本語の文字列をPOSTした時に、
$encode = mb_http_input('P');
で、ブラウザが送信したエンコーディングを検出しようとしたのですが、
何度やっても$encodeの中身が空です。どうしてなのでしょうか?
ちなみにブラウザはIE6.0です。
0367nobodyさん
2006/06/15(木) 07:59:49ID:???対応していないブラウザがどうの言ってるやつがいるが、
RFCに絶対URLにしろと書いてあるってのが正しい根拠な。
0368nobodyさん
2006/06/15(木) 08:17:47ID:???この場合、実際にRFC準拠じゃないとダメなブラウザがあることを証明しないと
「別にいーじゃん」で通す輩が出るので困る
0370nobodyさん
2006/06/15(木) 10:31:26ID:???最新バージョンのブラウザでは特殊文字は変換しなくても表示する?
0371nobodyさん
2006/06/15(木) 10:52:57ID:???将来の最新ブラウザがもっと標準に沿った実装になれば見えなくなる可能性は高い。
0373nobodyさん
2006/06/15(木) 11:45:39ID:B1LJZBRvってなくても動作しますか?
なんか、どこにも、php.iniがないのに動作してるんですが、、、
0375373
2006/06/15(木) 11:55:19ID:B1LJZBRvを出力すると
Configuration File (php.ini) Path /usr/local/lib
って出力されるんですが、
/usr/local/lib には、一切そんなファイルないんですよ。
0376nobodyさん
2006/06/15(木) 12:07:42ID:???例えばこういうのを読み込んで↓
http://headlines.yahoo.co.jp/rss/c_int-yonh.xml
Shift-JISで出力したいんですが、上手くいきません。
なぜShift-JISかと言うと、FLASHがShift-JISでないと文字化けしちゃうようなので、
「xml→php→flash」というふうにphpを中継してFLASHにXMLを読み込ませようとしてます。
自分が書いてみたコードは以下です。
どなたかアドバイスのほどよろしくおねがいします
<?
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/xml; charset=Shift_JIS");
$text = file("http://headlines.yahoo.co.jp/rss/c_int-yonh.xml");
echo join('',$text);
?>
0378nobodyさん
2006/06/15(木) 12:29:36ID:???無けりゃ、PHPのデフォルト値が採用される。
でもphp.iniで設定してないと困る事、多くないか?
php.iniでしか設定できないパラメータも多いし。
0379nobodyさん
2006/06/15(木) 12:37:15ID:???それだと恐らくヘッダーの表記だけSJISで、中身は元のエンコーディング。
PHPのHTTP出力機能で自動変換を掛けるか、
自分のコード内できちんとSJIS変換を掛ける。
0380nobodyさん
2006/06/15(木) 12:55:23ID:???mb_http_output("SJIS");
ってのをアタマに入れてみたんですが、変換されてないみたいなので、
出力の時に
echo mb_convert_encoding( join('',$text), "sjis", "utf-8");
ってエンコードかけたら出来ました。
ありがとうございます!
0381365
2006/06/15(木) 13:53:50ID:???$encode = mb_http_input('GP');
とやってみましたが、やはり$encodeには何も戻り値が来ません。。。
(ちなみにフォームには「METHOD="POST"」と指定してあります)
これはブラウザ側の問題なのでしょうか、それともPHP側の設定の問題なのでしょうか?
みなさんはこのような例で、きちんとエンコードが戻り値として返されますか??
0382nobodyさん
2006/06/15(木) 14:27:51ID:???俺も既存のフォームで試してみたら、
たしかに文字エンコーディングの値が取れなかった。
HTMLにはcharset=EUC-JPを明記してあるのだが。
IEと携帯の両方で試したけどダメだった。
ってか、そのmb_http_inputって初めて見るんだけど、
そもそも戻り値をくれる関数なのか!?
0383nobodyさん
2006/06/15(木) 14:30:15ID:???phpで画像を作成して表示するプログラムを作っています。
A:temp.gif 表示
B:あるボタンが押されたらそれに対応したtemp.gif作成
という二つの処理を同じページ(?)内で繰り返しています。
ところが、ボタンを押して新たなtemp.gifが作成されても、画像表示では以前のtemp.gifのまま表示されています。
(ブラウザをリロードすると新しく作成された画像が表示されます)
この場合、ブラウザをリロードせずに、どうすれば新しく作成された画像を表示することが出来るでしょうか。
回答をよろしくお願いします。
0384nobodyさん
2006/06/15(木) 14:36:13ID:???$time = time();
print "<img src=\"temp.gif?${time}\">";
などで、リンクを無理やり毎回変更する
0387nobodyさん
2006/06/15(木) 14:44:32ID:LGGZbqC+スクリプトはUTF-8、出力はSJIS(携帯用なので)で、
同スクリプトのフォームから送った単語をひらがなのみにマッチさせたいので以下のようにしてみました。
$tango = mb_convert_encoding($_POST['tango'], "utf-8", "SJIS");
echo preg_match("/^[ぁ-ん]+$/", $tango);
しかし、カタカナが入っていても1が返ってくるのですが、原因は何なんでしょうか?
エンコードは関係あるんでしょうか?
0389nobodyさん
2006/06/15(木) 14:53:39ID:???<?php
include("1.php");
?>
これをどのようにすれば実装できるのでしょうか?
<?php
mt_srand((double)microtime()*1000000);
$randval=mt_rand(1,3);
include("http://●.com/".$randval.".php");
?>
ぐぐってここまで書いたのですが、動きません(´・ω・`)
0390nobodyさん
2006/06/15(木) 14:59:16ID:KiPjTUhkinclude("hoge".mt_rand(1,3)."hoge");
0392nobodyさん
2006/06/15(木) 15:07:55ID:sMlBi/Z4です。
大変遅くなりましたが、皆様のおかげで、MySQLにパスワードありで接続
することが出来ました!!ありがとうございました!!
0393nobodyさん
2006/06/15(木) 15:14:34ID:???http://php.com/php/php2.php
http://php.com/php/php3.php
ってな具合に用意して、
<?php
mt_srand((double)microtime()*1000000);
include("http://php.com/php/php".mt_rand(1,3).".php");
?>
動かないorz
ドシロウトで済みません(´・ω・`)なんで?
0397nobodyさん
2006/06/15(木) 15:50:03ID:???0398nobodyさん
2006/06/15(木) 16:11:39ID:???'GP'なんて"俺"パラメータを受け付けるような関数ではないが...
(実際には無指定と同じ処理になるようになってる)
0399nobodyさん
2006/06/15(木) 16:23:06ID:???マニュアル(http://php.s3.to/man/ref.mbstring.html)のmbstringの設定の解説で
> mbstring.encoding_translation boolean
> 入力される HTTP クエリに関して、文字エンコーディング『検出』および
> 内部文字エンコーディングへの変換を行う透過的な文字エンコーディングフィルタを
> 有効にします。
とあったので試しに.htaccessに
php_flag mbstring.encoding_translation On
と書いてみると
mb_http_input("P");
が"pass"になったよ。
でもどうやったら"pass"を正しい文字コードにできるのかは俺には分からんかった。
試す時はmbstring.encoding_translationはPHPファイル中のini_set()では設定できないという点に注意。
0402軟式PHP
2006/06/15(木) 16:29:11ID:???0404nobodyさん
2006/06/15(木) 16:41:01ID:???その全角のスペースは何かの間違いだと仮定して、
1.php:
<?php print "1"; ?>
2.php:
<?php print "2"; ?>
3.php:
<?php print "3"; ?>
test.php:
<?php include("./".mt_rand(1,3).".php"); ?>
で動作した。
test.php:
<?php include("http://127.0.0.1/~hage/".mt_rand(1,3).".php"); ?>
でも動作した。
設定のallow_url_fopenがOffなのか、或いはこの辺が怪しいと思う。
> 注意:
> PHP 4.3未満のWindows版PHPは次の関数については
> リモートファイルアクセスをサポートしてません。
http://php.s3.to/man/features.remote-files.html
まあ相対パスで書いてみろってこった。
0405nobodyさん
2006/06/15(木) 16:43:56ID:???やてみます!
ありがとうございます!
0406nobodyさん
2006/06/15(木) 17:08:26ID:???おお、できました!動作確認完了
サンクス!!
<?php include("http://●●●.com/●●/php".mt_rand(1,3).".php"); ?>
この一行だけを実装してみて、ランダムアクセス・かつきちんと動作確認とれました。
mt_srand((double)microtime()*1000000);
この行がいらなかったのかなー
ありがとうございました(`・ω・´)
0407nobodyさん
2006/06/15(木) 17:41:22ID:???何だか良く分からんが動いたのか、そりゃ良かった。
ちなみに
<?php
mt_srand((double)microtime()*1000000);
print "http://php.com/php/php".mt_rand(1,3).".php";
?>
は特に問題なく動く。
>>393みたいに変な位置に全角スペースが無ければね。
全角スペースが原因で無かったとしたら、これかも知れない。
http://php.s3.to/man/function.microtime.html
> microtime() は、gettimeofday() システムコールをサポートする
> オペレーティング システムがでのみ使用できます。
まあともあれ、
http://php.s3.to/man/function.mt-srand.html
> 注意:
> PHP 4.2.0 以降、srand() または mt_srand() によりランダム数生成器に
> シードを与える必要はありません。
> これは、この処理が自動的に行われるためです。
というわけでmt_srand()は省略しても問題はない。
0408387
2006/06/15(木) 18:51:02ID:3dqAzs9Oそうなんですね…アホなことしてました。
そこでmb_eregを使って以下のようにしてOKでした。
if (mb_ereg("^[ぁ-ん]+$", $tango)) {
echo "ひらがな";
}
これに更に「ー」(長音?)もマッチさせたいのですが、
if (mb_ereg("^[ぁ-んー]+$", $tango)) {
echo "ひらがな";
}
とするとなぜかダメなようです。\ーもやってみました。
原因は何が考えられるでしょうか?
0409nobodyさん
2006/06/15(木) 19:08:49ID:UdRqyXnhPerlのXMLinのForceArrayのようなことは
できないのでしょうか?
0410nobodyさん
2006/06/15(木) 20:00:26ID:tq4h0Q38どうすれば?
$str = md5 ('apple');
echo $str; // '1f3870be274f6c49b3e31a0c6728957f'
0412nobodyさん
2006/06/15(木) 20:09:56ID:???それはどれほど長い文字列であったとしても16バイトに縮める事ができ、
なおかつそれを元の長い文字列に戻すことができるという恐るべき悪魔の発明であった。
0413nobodyさん
2006/06/15(木) 20:14:05ID:???文書の冒頭に強調して書いとけよ。
不満だーーー!!
0416nobodyさん
2006/06/15(木) 21:59:40ID:???>'GP'なんて"俺"パラメータを受け付けるような関数ではない
ハァ? 公式マニュアルよく嫁カス。
もしくは大垣リファレンスp.301でも良い。
0417nobodyさん
2006/06/15(木) 22:16:03ID:???コマンドライン上からphp -rで実行した場合正常に生成されるのに
ソースに書いてそれを実行すると失敗する
パーミッションに関しては問題ないと思われるのですが
原因はどのようなものが考えられるでしょうか?
0419nobodyさん
2006/06/15(木) 22:26:13ID:???おk、把握した。
<?php
print mb_regex_encoding(); // そしたらISO-8859-1とか言われたので、
mb_regex_encoding("UTF-8"); // 正規表現で用いるエンコーディングを
// mb_regex_encoding("SJIS"); // スクリプトの文字コードに合わせる
// mb_regex_encoding("EUC-JP"); // 試した環境ではUTF-8。
$tango = "あああーあああ";
$search = "^[ぁ-んー]+$";
if (mb_ereg($search, $tango)) {
echo "ひらがな";
}
?>
あるいは、
<?php
print "あ"; // 先に2バイトコードを出力していれば、
print mb_regex_encoding(); // 大人しくUTF-8と分かってくれたので、
//mb_regex_encoding("UTF-8"); // 正規表現で用いるエンコーディングを
// mb_regex_encoding("SJIS"); // スクリプトの文字コードに合わせる
// mb_regex_encoding("EUC-JP"); // 必要は無い。
$tango = "あああーあああ";
$search = "^[ぁ-んー]+$";
if (mb_ereg($search, $tango)) {
echo "ひらがな";
}
?>
どう見ても文字コードの問題です。本当にありがry
0420nobodyさん
2006/06/15(木) 22:29:06ID:???やはり権限の問題なんですかね
コマンドラインから実行する際のユーザとサーバを動かしてるユーザは同じハズなんですが
お答えいただきありがとうございました
0421419
2006/06/15(木) 22:30:25ID:???DoCoMoのFOMAの拡張絵文字を何とかしようとしてUTF-16でばっちこいと言われ絶望した記憶が。
0422nobodyさん
2006/06/15(木) 22:36:31ID:???手元の「携帯端末用Web製作バイブル 第3刷」には
iモード シフトJIS
iモード対応XHTML シフトJIS, UTF-8
EZweb シフトJIS
Vodafone シフトJIS, ISO-2022-JP, EUC-JP, UTF-8(P4(2)型/W型のみ)
とある
0423nobodyさん
2006/06/15(木) 23:31:52ID:???マジか。
てことは、携帯全般に広く対応するには敢えてSJISで文字化けを乗り越えて行く必要があると。
タマランなあ…
0425nobodyさん
2006/06/15(木) 23:46:29ID:???0426nobodyさん
2006/06/16(金) 00:18:37ID:???新しいファイルを作成しようとしたのですが、
$fp = fopen($data,"x");
これで、localサーバーでは作成できたのですが、
アップロードしたら作成されません。
ちなみにサーバーは
http://space-town.net/を使っています。
0427nobodyさん
2006/06/16(金) 00:21:07ID:???メーラーによっては普通に表示できるみたいですが、どうしてこうなってしまうんでしょうか?
文字コードや改行コードについて調べてみましたが解決策はわからず。
0428nobodyさん
2006/06/16(金) 00:32:55ID:???パーミッションと所有者とパスを確認
>>427
Windows用の改行コード(\r\n)になってる恐れあり
確認されたし
0430nobodyさん
2006/06/16(金) 00:40:41ID:???一応PHP4.4.2と5.1.4のソースや、現行のマニュアルを確認した上で言ってんだけどな。
バージョン違いの仕様の差異や公式ドキュメントからの読み落としがあったら謝るよ。
http://jp.php.net/manual/ja/function.mb-http-input.php
マニュアルには列挙出来るとも、列挙した場合の動作解説はないと思うが。
文字"列"とは書いてあるが、この場合はモードを表す1文字だけの文字列。
>大垣リファレンス
確かに手元の初版のやつだけど解説のサンプルで'GP'ってやってるな。
これは間違いだと思うよ。記述の方では「いずれか」ってなっている(適正)けど。
あと該当ページの「ブラウザから送られてくる文字エンコーディングを設定したり」
ってところも間違いかと。巷でもmb_http_input('SJIS')とか解説してるページがあるが...
0433nobodyさん
2006/06/16(金) 00:55:51ID:???> $fp = fopen($data,"x");
ここに問題があるとは思えないなあ。
$dataの中身はどうなってる?
>>431
つ http://php.s3.to/man/function.fopen.html
"x"は完全な新規作成だよ。
0434nobodyさん
2006/06/16(金) 00:56:25ID:???バージョンはどうなんだよ
0435nobodyさん
2006/06/16(金) 00:58:28ID:???includeで読み込んでるから、トップページからのパスだからあってるはず
というか、Local鯖ではちゃんと作成されたんだけどな・・・
xはPHP4.3.2からでしたっけ?
0436433
2006/06/16(金) 00:59:53ID:???あ、その無料ホームページサイトはCGIに関して「Perlが利用可能です」としか書いてないけど、
まさかPHPが無いとかいうオチでは無いだろうね?
0438nobodyさん
2006/06/16(金) 01:01:25ID:jcDHX2J/他のPHPは全て使えています。
掲示板やアクセスカウンタも大丈夫です。
0440nobodyさん
2006/06/16(金) 01:04:08ID:???いつのまにかファイルが作成されていてビックリです。
ディレクトリのパスは[0777]以外はダメなのですよね?
もしかしたら、最初[0755]になっていたので
それを変えて実行されたのかと思います。
文がまとまってませんが、お手数おかけしました。
0441433
2006/06/16(金) 01:08:19ID:???ともあれ解決して良かった。
0442nobodyさん
2006/06/16(金) 02:24:31ID:???echo "len: $lenm";//len: 100m と間を空けたくない場合は
echo "len: ".$len."m";
とするしかないですか?
0443nobodyさん
2006/06/16(金) 02:48:29ID:???でもおk。
0444nobodyさん
2006/06/16(金) 03:24:36ID:2zUyZAya<?=preg_replace("/[0-9]/","",$test]) ?>
で、出来ました。
そしてこの数字を取り除いた後の文字(例えば”テスト”)と比較する為に
$test2=preg_replace("/[0-9]/","",$test]) ;
if($test2=="テスト"){
echo"テストです";
}
みたいなことをしたかったのですが、$test2に数字を取り除いた後の文字が
入りません。こういう場合、どうしたらいいのでしょうか?
0446nobodyさん
2006/06/16(金) 03:35:24ID:???preg_replace("/[0-9]/","",$test);
0447nobodyさん
2006/06/16(金) 03:39:34ID:???単なる確認ミスかなんかだと思う。
$test2=preg_replace("/[0-9]/","",$test);
の次の行で
echo "test=[$test] test2=[$test2]";
って入れてみれば。
0450nobodyさん
2006/06/16(金) 08:07:44ID:Zr6gS6bm亀レスすいません、ありがとうございます。
おっしゃるとおり文字コードでした。
おかげさまでエロい正規表現ができました。感謝です。
0451nobodyさん
2006/06/16(金) 12:41:51ID:???<< ってなにをする物でしょうか?
こんな感じで使われていたのですが、具体的に何をやっているか分かりませんでした。
13 << 22
0452nobodyさん
2006/06/16(金) 12:49:43ID:???http://php.s3.to/man/language.operators.bitwise.html
0453452
2006/06/16(金) 13:03:59ID:???<?php
print 13 << 22; // これらは全て
print 13 * pow(2, 22); // 54525952を返す
print 13 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2;
?>
0454nobodyさん
2006/06/16(金) 15:55:13ID:???$a = 1 << 2; // $a=4
$a = 1 << 3; // $a=8
$a = 1 << 4; // $a=16
$a = 1 << 5; // $a=32
$a = 1 << 6; // $a=64
$a = 1 << 7; // $a=128
$a = 1 << 8; // $a=256
$a = 1 << 9; // $a=512
$a = 1 << 10; // $a=1024
$a = 1 << 11; // $a=2048
$a = 1 << 12; // $a=4096
$a = 1 << 13; // $a=8192
$a = 1 << 14; // $a=16384
$a = 1 << 15; // $a=32768
$a = 1 << 16; // $a=65536
0455nobodyさん
2006/06/16(金) 16:26:24ID:???■ このスレッドは過去ログ倉庫に格納されています