【PHP】質問スレッドpart18【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/06/14 14:36ID:???・新規質問の方は上げてください。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
抜けているものがあったら補足願います
0767nobodyさん
04/07/08 15:56ID:???phpinfo() を眺めればわかるかも。
0768764
04/07/08 16:02ID:???最初から設定されている変数しか取得できないのかなぁ。
0769nobodyさん
04/07/08 16:30ID:???「最初から」の意味がよくわからないんだけど。CLI だと以下のようになる。
$ OTL=9 php -i | grep OTL
OTL => 9
_SERVER["OTL"] => 9
_ENV["OTL"] => 9
0770nobodyさん
04/07/08 16:55ID:???>幸せになれるかと思います。
この表現キモイ
0772764
04/07/08 16:57ID:???Linux上で
# export TEST=1234
として
php上でTESTと言う名前を指定して、
1234という数字が取得できるかが知りたかったんだ。
0773nobodyさん
04/07/08 17:15ID:???とれる。$_SERVER か $_ENV に格納されているはず。
$ export TEST=1234
$ php -r 'echo $_ENV["TEST"];'
1234
0775770
04/07/08 17:24ID:???MLスレに書くつもりだった
0777nobodyさん
04/07/08 17:31ID:???$_ENVかgetenv()でとれるのは確かだけどモジュール版の場合は
httpdを起動させたユーザーの環境変数が引き継がれるので
サーバー起動と同時にhttpdを立ち上げる設定の場合は無理ぽ。
0778nobodyさん
04/07/08 17:37ID:???なるほど、httpd の起動スクリプトに環境変数を書いておけばいいのかな。
で、764 さんは環境変数を読み込んで何をしたいのか気になります。
0779764
04/07/08 17:50ID:???サーバー起動時にモジュールApacheを立ち上げてていたので、
それが問題になっていたようです。
>>778
バッチ処理で発生した日時データの必要部分を環境変数に保存し、
それをPHP側で利用しようとしていました。
0780nobodyさん
04/07/08 18:01ID:???環境変数じゃなくてファイルに書きこむのではだめですか?
0781nobodyさん
04/07/08 22:29ID:YCLF39oitest
test
test
test
以上のような改行を含んだ文字列の場合最終的には
test<br>test<br>test<br>test<br> このような形へと変更したいのですが
$text = $_POST['text'];
$text = nl2br($text);
$text =rtrim($text);
以上の処理では
test<br />
test<br />
test<br />
test<br />
このように改行コードが取り除かれていないような形になってしまっています。
どのようにすればよいのでしょうか?
0783nobodyさん
04/07/08 22:52ID:YCLF39oi0784カポコン
04/07/09 01:28ID:???質問の回答などに使ってみてください。
いずれ、リスト化させます。
ttp://cgi.f13.aaacafe.ne.jp/~mugen/2ch/
0788nobodyさん
04/07/09 14:06ID:rjBtiSrjその中の<a>タグのHREF属性にあるURLを取得したいのですが
HREF属性は相対URLで書かれている可能性もあるため、上手く処理できず困っています。
HTML中の相対URLを絶対URLに変換するにはどうすればよいのでしょうか?
0790nobodyさん
04/07/09 14:37ID:rjBtiSrjPHP関連はこの板かと思ったのですが・・・
0791nobodyさん
04/07/09 14:39ID:???0792nobodyさん
04/07/09 14:44ID:???httpやftpで始まっていなかったらそれらとくっつける。
始まっていたらそのまま利用する。
./ や / で始まっていたらその部分を削除して、
../ で始まっていたら先ほど取得したパスを ../ が連続する分遡るようにパースしてくっつける。
こんな感じか。
0793nobodyさん
04/07/09 15:31ID:???0794nobodyさん
04/07/09 15:43ID:???そんなことより最近、電動ナナシさそを見かけないけどどこいったんだろう。
0795nobodyさん
04/07/09 16:18ID:???0796nobodyさん
04/07/09 16:45ID:???$year = (!isset($year)) ? date("Y") : $year;
上の?の意味がわかりません。
どなたかご教授よろしくお願いします
0797nobodyさん
04/07/09 16:48ID:???PHPに限らず他の言語でも利用出来るものもあるんだが、
if( !isset( $year ) ){
$year = date("Y");
}else{
$year = $year;
}
と同義な。
0798nobodyさん
04/07/09 17:01ID:9qX+1d8Aphp.iniを編集して
;extension=php_mbstring.dll
を有効にすると
プロシージャ エントリ ポイント spprintf がダイナミックライブラリ php4ts.dll から見つかりませんでした。
Unable to load dynamic library '*****php/extension/php_mbstring.dll'-指定されたプロシージャが見つかりません。
と。上記の2つのメッセージが2回づつ出て、php_mbstringも有効になりません。
extension_dir =の指定は間違っていなくて、php_mbstring.dllも確実にあるのですが・・・
検索しても分からずお手上げ状態
0800nobodyさん
04/07/09 17:55ID:/g6zLd9Zある数値が奇数か偶数かを調べるのに一番最適な方法って何でしょうか?
現在は数値を2で割って余りがあるかどうかで判別してます
0801nobodyさん
04/07/09 18:04ID:???print ( $n % 2 ) ? "奇数": "偶数";
0802nobodyさん
04/07/09 18:05ID:???0803nobodyさん
04/07/09 18:06ID:???0804797
04/07/09 18:14ID:???0805nobodyさん
04/07/09 18:18ID:???print $a&1?'奇数':'偶数';
print $a%2?'奇数':'偶数';
うちの環境じゃ両方とも偶数と吐きやがる
0808nobodyさん
04/07/09 18:42ID:???print preg_match("/[13579]$/",$a)?'奇数':'偶数';
奇数だ。文句あっか?
0810yoshi
04/07/09 22:15ID:UYWtgnDgweb上にエクセル文書(.xls)を置きhtmlの中で
リンクを張りダウンロードできるようにしています。
とくにパスワードなどは何も設定していないのですが、
このファイルをIEからダウンロードしようとすると
IDとパスワードの入力をうながすダイアログが
表示されるという現象が起こっています。
これは何故なのでしょうか?
希望する動作としては何もダイアログなど表示されずに、
ダウンロードできることなのですが。
よろしくお願いします。
0811カポコン
04/07/09 22:58ID:???print preg_match("/[^02468]$/",$a)?'奇数だ。文句あっか?':'偶数だ。文句あっか?';
0812nobodyさん
04/07/10 00:30ID:???は偶数らしいです。
0813nobodyさん
04/07/10 00:48ID:???カポコンファンは黙っていない。バグってるぞ!!!
<?php
$a = 1e99;
print preg_match("/[^02468]$/",$a)?'奇数だ。文句あっか?':'偶数だ。文句あっか?';
?>
0815nobodyさん
04/07/10 01:42ID:89QqCOpOそのやり方で現在のURLの最後が/でない場合、それがディレクトリなのか
ファイルなのかを判別する方法はあるのでしょうか?
例:
現在のURL=http://aaa.co.jp/bbb/ccc
抽出したURL= ../test.html
この場合、cccがファイル名である可能性はないのでしょうか?
そうなると絶対パスが以下のどちらになるのか判定できず困っています。
cccがファイルの場合 http://aaa.co.jp/bbb/test.html
cccがディレクトリの場合 http://aaa.co.jp/test.html
>>793 正規表現で一発で相対パスを置き換える方法があるんですか!
できれば教えていただきたいです。
0817nobodyさん
04/07/10 03:27ID:???実際にアクセスするまで分からない。
ディレクトリならサーバのレスポンスコードが教えてくれる。
HTTP/1.0 301 Moved Permanently
Location: /を付加したパス
0818nobodyさん
04/07/10 08:09ID:???>>817のいうとおり。ちょっとかみくだいて書くと、
cccがディレクトリの場合は、http://aaa.co.jp/bbb/ccc にアクセスすると
http://aaa.co.jp/bbb/ccc/ にリダイレクトするようレスポンスが帰ってくる。
それに従って読み先を変えて読めばいい。
現在のURL=http://aaa.co.jp/bbb/ccc/
抽出したURL= ../test.html
→答え=http://aaa.co.jp/bbb/test.html
になる。
cccがファイルの場合はアクセスすると普通に読めて、
現在のURL=http://aaa.co.jp/bbb/ccc
抽出したURL= ../test.html
→答え=http://aaa.co.jp/test.html
になる。
だから、相対パスから絶対パスへの変換はどちらも同じやり方でできる。
0820nobodyさん
04/07/10 09:31ID:9IEmUTDPこのときあるサイズ以上の大きさには表示させないようにできますでしょうか?
<IMG>タグのwidthやheightで指定すると小さい画像もそのサイズに拡大されてしまうので・・
0821820
04/07/10 09:46ID:9IEmUTDPgetimagesizeでいけますね、すみません。
0822nobodyさん
04/07/10 10:43ID:???1,りんご,200円
2,みかん,100円
3,ぶどう,500円
(data.txt)
というファイルがあったとして
「2,みかん,100円」
を表示させるとしたら、
$lines = file("data.txt");
print $lines[1];
というように出来ると思うのですが、
「みかん」だけを表示させるとしたらどうすればいいか分かりますか?
$lines = file("1.txt");
$ary = fgetcsv($lines[2],1000,",");
print $ary[1]
まず行を読み込んで、カンマ区切りで読み込むというのを考えたのですが、
これはfgetcsvの機能的に無理みたいでした。
0823nobodyさん
04/07/10 10:48ID:???とりあえず、マニュアルでも読めば?
ttp://www.php.net/manual/ja/function.fgetcsv.php
0824nobodyさん
04/07/10 11:01ID:???fgetcsvがfopen()、 popen()、fsockopen()以外では使えないことはわかったんですが、
結局のところどうすればいいんでしょうか
fopenでオープンして、ポインタを2行目に持っていって
fgetcsvを使えればいいと思うんですが、そういうことはできますかね
0825nobodyさん
04/07/10 11:30ID:???こんな感じかな。
<?php
function 絶対URL($現在のURL,$相対URL){
$p=array('@/\.(?=/|$)@', '@^(.+//.+)/(?!\.\./)[^/]+/\.\.(/.*|)$@e');
$r=array('','preg_replace($p,$r,str_replace(\'\\\\"\',\'"\',\'\\1\\2\'))');
return preg_replace($p,$r,substr($現在のURL,0,strrpos($現在のURL,'/')+1).$相対URL);
}
$a='http://aaa.co.jp/bbb/ccc/ddd/eee/fff';
$b='././../.././././a/../a.a/../a/b/../../../b/.';
print "$a\n$b\n";
print 絶対URL($a,$b);
?>
0826nobodyさん
04/07/10 11:42ID:???array_map('deny_host',$hosts);
function deny_host($str){
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
if( mb_ereg($str,$host) ){
echo "<html>\n<head>\n<title></title>\n</head>\n<body>\n</body>\n</html>";
exit;
}
}
このようなアクセス拒否(というか空白を表示する)スクリプト使ってるんですが
自分でもちょっとトリッキーかな、と思ったりするのですが普通はどうしてますか?
0827nobodyさん
04/07/10 11:51ID:???0828nobodyさん
04/07/10 12:11ID:???> PHPのイメージ関数により JPEG、GIF、 PNG、SWF、 TIFF、JPEG2000イメージの 大きさを知ることができます。
0830nobodyさん
04/07/10 14:53ID:???できる。
fopen() で開いてから fgetcsv() で1行目を読んで無視しして、再度読み込んだら2行目。
>>826
わざわざ array_map() を使う意味がわからない。
普通に以下のように処理したら駄目なのか?
$regex = 'hoge|moge';
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if (eregi($regex, $host)) {
exit;
}
0832nobodyさん
04/07/10 17:43ID:???explode使わないのは理由があるのか?
1,"みかん,リンゴ","500円"
とか""で括られたデータも扱いたいなら
Stream_Var使え。
require_once('Stream/Var.php');
stream_wrapper_register("var", "Stream_Var");
$lines = file('fruits.dat');
$fp = fopen('var://GLOBALS/lines/2', 'r');
$fruit = fgetcsv($fp, 1024);
print_r($fruit);
fclose($fp);
0833nobodyさん
04/07/10 18:38ID:???どのサーバーでもたいがいインストールされてるのかなぁ
0834nobodyさん
04/07/10 18:53ID:???そんな質問投げてる時点で素人
まず PEAR のなんたるかを勉強しる!
http://phphp.net/pearwiki/?%5B%5BAN_INTERVIEW_OF_STIG_BAKKEN%5D%5D
http://pear.sakura.vg/index.php?%5B%5BPEAR%A5%DF%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0%CD%D7%CC%F3%5D%5D
0836nobodyさん
04/07/10 19:57ID:???is_numericを使うと数値しか判断されないんですよね?
半角英数字を判断する命令文はあるのですか?
0838nobodyさん
04/07/10 20:10ID:???このように取得して処理する場合 $_GET['mode'] でよいのは分かるのですが
index.php?abc
として処理をさせたい場合、どのように記述すればよいのでしょうか?
0839nobodyさん
04/07/10 20:26ID:???0840nobodyさん
04/07/10 20:27ID:???PEAR を使うのも悪くないけど、今回のような場合は使わなくても簡単にできるような気が・・・。
質問者はあまり考える気はなさそうなのでどうでもいいけど。
$line = 2;
$fp = fopen('data.txt', 'r');
while (--$line) fgetcsv($fp, 1024);
$fruit = fgetcsv($fp, 1024);
fclose($fp);
print_r($fruit);
0843nobodyさん
04/07/10 22:13ID:???変数毎に2行書くのはなんか嫌だなと・・・・
php.iniのdisplay_errorsはoffにして気づかない事にするべきかなぁ
みなさんは変数毎に両方のチェックをしていますか?
0845nobodyさん
04/07/10 22:56ID:???!empty($val)は?
0846nobodyさん
04/07/10 23:03ID:???PHPでも$_SERVER["argv"]使ってる。
0847nobodyさん
04/07/11 00:38ID:???0848nobodyさん
04/07/11 00:41ID:???0849847
04/07/11 00:48ID:???$_SERVER['REMOTE_ADDR']でできますね・・。
0850nobodyさん
04/07/11 03:22ID:???0853nobodyさん
04/07/11 04:08ID:???http://www.boutell.com/gd/faq.html
0854nobodyさん
04/07/11 05:16ID:???0855nobodyさん
04/07/11 05:39ID:???ファイルに保存するのにはどうしたらいいですか?
`wget www.hoge.com/file`;
という行を、wget を使わず、phpの機能だけで実現したいのです。
0856名無しさん@そうだ選挙に行こう
04/07/11 06:54ID:???で何を使う?
0857名無しさん@そうだ選挙に行こう
04/07/11 09:02ID:???open
0858名無しさん@そうだ選挙に行こう
04/07/11 12:33ID:???$val = ereg_replace("<!--([0-9a-z._-])-->","\\1",$val);
の「>」がマッチ出来ないのですが何故でしょうか?
0859名無しさん@そうだ選挙に行こう
04/07/11 12:51ID:???abcとしたいのなら、
$val = ereg_replace("<!--([0-9a-z._-]+)-->","\\1",$val);
0860名無しさん@そうだ選挙に行こう
04/07/11 13:05ID:???ありがとうございますm(_)m
0861名無しさん@そうだ選挙に行こう
04/07/11 17:26ID:0oJHpIPmPHP内でPerlのコードを記述することは可能でしょうか?
どうしてもPHP使いたくないもんで。
よろしくお願いします。
0862nobodyさん
04/07/11 18:19ID:???0863名無しさん@そうだ選挙に行こう
04/07/11 18:19ID:fHFfT4lGecho('今から処理します');
と返して、httpコネクションを切ってから
重たい処理をさせたいのですが、
どうやったらhttpコネクションを切れますか。
0864名無しさん@そうだ選挙に行こう
04/07/11 18:21ID:???0865nobodyさん
04/07/11 18:33ID:???register_shutdown_function() を使ってみるとか。
ttp://www.php.net/manual/ja/function.register-shutdown-function.php
0866名無しさん@そうだ選挙に行こう
04/07/11 19:01ID:???copy('http://www.hoge.com/file', 'file');
こういう機能を使うときに
ああ、phpって幸せだな
と思う。
■ このスレッドは過去ログ倉庫に格納されています