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

【PHP】下らねぇ質問はここに書き込みやがれ 23

■ このスレッドは過去ログ倉庫に格納されています
00019092006/06/23(金) 01:59:03ID:lPdqGX0Z
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0608nobodyさん2006/07/02(日) 01:27:10ID:???
>>607
ファイルタイプ
http://jp.php.net/manual/ja/features.file-upload.php

圧縮ファイル
http://jp.php.net/manual/ja/funcref.php
の一覧からお好きなものをチョイス
0609nobodyさん2006/07/02(日) 01:41:16ID:W09rfuPj
>>608
>ファイルの MIME 型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif" のようになります。
>この MIME 型は PHP 側ではチェックされません。
>そのため、 この値は信用できません。

これでも大丈夫かな?
0610nobodyさん2006/07/02(日) 01:41:40ID:???
>>606
$nl = "\r\n";
ereg_replace("$nl($nl)+", $nl, $text);
preg_replace("/^$nl/m", "", $text);

^$はマッチ幅ナシね。
0611nobodyさん2006/07/02(日) 01:53:12ID:???
>>609
大丈夫なのか否かってのは何を作りたいかによるから何とも言えない。
確かに、hidden パラメータとかと同じで、改竄はありうる。
しかし、そのファイルが例えば JPEG か否かをちゃんと判断するには
プログラマがそのファイルの内容・構造をチェックして判断しなければならない。
その為には、そのファイルのフォーマットの仕様・特徴(SOI APP …など)
を知っていないと判断のプログラムが書けませんが
それが出来るなら、自分でチェックすれば良い話です。
簡易に済ませたかったら system で file を呼ぶとかも考えられますけど…
0612nobodyさん2006/07/02(日) 01:58:42ID:oZjla2sM
>>610
ありがとうございます

$text = 'log.txt';
$nl = "\r\n";
for($i = 0; $i < count($line); $i++){
if( ereg_replace("$nl($nl)+", $nl, $text) ){
preg_replace("/^$nl/m", "", $text);
break;
}
}

こう作ってみたんですけど、改行抜けません
おかしい所教えてもらえませんでしょうか

0613あああ ◆rHbUqJDbds 2006/07/02(日) 02:09:51ID:???
あ
0614nobodyさん2006/07/02(日) 02:14:51ID:???
サンプル■1234
サンプル■1234■5678

の場合、最初の■以降の文字を消したいのですが、
preg_replace('/■?', '', $str);

こうしたのですがうまくいきません。
どこが間違っているのでしょうか
0615nobodyさん2006/07/02(日) 02:17:45ID:???
>>612

preg_replace("/^$nl/m", "", $text);
↓
$text = preg_replace("/^$nl/m", "", $text);

つーか、せっかくpreg使ってるのに何でeregもつ買ってるの?
pregだけでいいんでない?


$text = file_get_contents("test.txt");
$nl = "\r\n";
$text = preg_replace("/^$nl/m", "", $text);

print($text); //確認

06166142006/07/02(日) 02:19:55ID:J/w8BCAt
すみません、追記です。
方向が変わってしまって^^;

サンプル■1234■5678

これを、最初の■で区切ることはできますか?

サンプル
■1234■5678

こうわけたいのですが
0617nobodyさん2006/07/02(日) 02:30:21ID:???
>>616
俺初心者だからかなり馬鹿っぽいやり方かもしれないけど

$sample = "サンプル■1234■5678";
$line = explode("■", $sample);

foreach($line as $key => $value)
if ($key == 0) $hoge = ($value."\n");
else $hoge .= ("■".$value);

print($hoge);

こんなんはどうかな。
0618nobodyさん2006/07/02(日) 02:30:46ID:???
>>612
もし配列で持ってるなら "" な項を捨てりゃいいだけだよ

>>616
都合のいい方使って好きなように。

$text = "サンプル■1234■5678";
list($mae, $usiro) = explode("■",$text,2);
$usiro = "■".$usiro;
echo "explode: $mae, $usiro\n";

preg_match("/^(.*?)(■.*)$/", $text, $capture);
echo "preg_match: $capture[1], $capture[2]\n";
06196172006/07/02(日) 02:34:46ID:???
うおやっぱ馬鹿丸出しやん・・・

>>618
参考になります!
0620nobodyさん2006/07/02(日) 04:04:38ID:???
<frameset rows="100,*" cols="*" framespacing="1" frameborder="yes" border="1">
<frame src="top.php?id=<? echo $_GET['id'];?>" name="topFrame" scrolling="Yes" id="topFrame" title="topFrame" />
<frame src="logpage.php?id=<? echo $_GET['id'];?>" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>

この場合で各フレームのURLを見たところ、?id=がなかったのですが
これでは無理なのでしょうか?
06216202006/07/02(日) 04:05:08ID:???
ちなみに、index.php?id=1でためした場合です
0622nobodyさん2006/07/02(日) 04:11:06ID:???
PHPでの数値をJavaSfcriptで出力ってできませんか?

$abs = 30;

setTimeout("location.href='abc.php'",1000*<? echo $abc;?>);
0623nobodyさん2006/07/02(日) 04:28:26ID:???
>>620
それでできるよ。
他に問題があるんでしょ。
0624nobodyさん2006/07/02(日) 04:32:06ID:???
>>622
PHP は HTML を出力するに過ぎない。
その出力する HTML に変数の値が埋め込まれた JavaScript が書かれれば良いだけ。
言っている意味分かる?
0625nobodyさん2006/07/02(日) 06:15:41ID:???
>>622
$abs != $abc
06266222006/07/02(日) 09:39:02ID:???
>>624
つまり、一気にJavaScriptを書き出せば良いのでしょうか?

>>625
すみません、両方$abcでお願いします
06276222006/07/02(日) 09:44:38ID:???
とりあえず

<?
echo "<SCRIPT LANGUAGE=\"JavaScript\">";
echo "<!--";
echo "setTimeout(\"location.href=logpage.php?id".$id."\",1000*10)";
echo "parent.topFrame.document.form.com.value=\'\'";
echo "-->";
echo "</SCRIPT>";
?>

としてみたところ、結果は同じでした・・・
どうすれば良いのでしょうか
06286222006/07/02(日) 09:57:28ID:???
すみません、解決しました。
0629nobodyさん2006/07/02(日) 09:57:31ID:???
>>627
そもそも「何と同じ」で、期待していたそれと異なる結果とは何?
0630nobodyさん2006/07/02(日) 09:58:14ID:???
出力されたJavaScriptをよく見ろ
0631nobodyさん2006/07/02(日) 10:24:55ID:???
(´・ω・`)
http://question.excite.co.jp/kotaeru.php3?q=2250330
http://pc8.2ch.net/test/read.cgi/hp/1151633256/53
0632nobodyさん2006/07/02(日) 12:02:59ID:???
サイテー
0633nobodyさん2006/07/02(日) 12:12:43ID:???
$_SESSION['var'] = "aaa";
echo $_SESSION['var'];

これって携帯でも表示される?
0634nobodyさん2006/07/02(日) 13:17:57ID:???
cookieダメならSID足したら?
0635nobodyさん2006/07/02(日) 13:44:17ID:???
$str='サーバサイド技術';
print(mb_convert_kana($str,'KV'));
↑の結果が「サーバサイド技術」のままで、全角に変換されないのですが
PHPはFC5のVersion 5.1.4です。
0636nobodyさん2006/07/02(日) 14:00:21ID:???
またお前か。
0637nobodyさん2006/07/02(日) 14:03:50ID:???
>>635
文字コードを指定してやって。
print(mb_convert_kana($str,'KV','euc-jp'));
みたいに。
0638nobodyさん2006/07/02(日) 14:28:22ID:???
>637
ありがとうございます。うまくいきました。

>636
そんなこと言わずにおつきあい下さいな
0639nobodyさん2006/07/02(日) 14:34:36ID:???
636は俺と付き合ってるからダメだ
0640nobodyさん2006/07/02(日) 14:42:29ID:???
おかしいな。俺と付き合ってるはずなんだが・・・?
0641nobodyさん2006/07/02(日) 14:44:45ID:???
まてまて、俺だ
0642nobodyさん2006/07/02(日) 15:11:01ID:???
Macのsafariで \と_が文字化けするために
自作PHPがsafariの場合上手く動作しないのですが、
よい回避策ないでしょうか?

ttp://www.sodan.ecc.u-tokyo.ac.jp/2004/FAQ/faq52-20040330.shtml
06436362006/07/02(日) 15:19:45ID:???
あらら、3つ又がばれちゃったみたいね。
0644nobodyさん2006/07/02(日) 15:27:39ID:???
>>642
そのサイトにUTF-8なら問題ないと書かれているのに何故そうしない?
0645nobodyさん2006/07/02(日) 15:36:09ID:???
下手にUTF使ったら別の状況で問題が発生するだけ
0646nobodyさん2006/07/02(日) 17:31:55ID:YHlCRRoc
掲示板などのデータを楽をしてシリアライズ保存しまう人って多いいのでしょうか?
シリアライズは便利で高速そうですが一度に全ての変数をメモリに乗せてしまう事になるなど
多少のデメリットもあるようですが、みなさんはどう考えられてますか?
0647nobodyさん2006/07/02(日) 17:51:29ID:???
>>646
多いかどうかはわからないけどシリアライズはかなり便利。
俺もよく使ってる。
掲示板のログ全部とかはさすがに入れないけども
要は工夫次第。
0648nobodyさん2006/07/02(日) 17:55:10ID:???
テキストファイルから任意の行だけ読み込む事はできますか?
ファイルポインタとかをどのように指定して良いのか分かりません。
0649nobodyさん2006/07/02(日) 18:53:00ID:???
何行目でやれば?
0650nobodyさん2006/07/02(日) 18:54:27ID:???
file関数で配列にぶち込んで行指定
0651nobodyさん2006/07/02(日) 19:11:02ID:???
レスありがとうございます。

>>649
すいません。よく分かりません。orz

>>650
負荷が気になるのですが、そうするのが一般的なのでしょうか。
0652nobodyさん2006/07/02(日) 19:39:02ID:???
データ量にもよるし。
任意ってのが例えばランダムで選択されるのか
ある文字列がある場合なのか
どのような条件かにもよると思う。
0653nobodyさん2006/07/02(日) 19:39:49ID:???
>>651
ていうか
具体的に何をやりたいのか
いっちゃいなよYOU!
0654nobodyさん2006/07/02(日) 19:58:32ID:???
具体的に、特定行を読みたいんだろうよ。
0655nobodyさん2006/07/02(日) 20:01:04ID:???
一般的かどうかは分からんが、
fopenして、任意の行までスキップすればいいんじゃない?
てか、データの検索でシコシコやりたいならDB使うのが定石だとおもうよ。
0656nobodyさん2006/07/02(日) 20:48:11ID:YHlCRRoc
多次元配列の次元数?を調べる方法はありますでしょうか?
$a[1][2] ← これなら2個とかです
0657nobodyさん2006/07/02(日) 20:50:42ID:???
count($a[1])
0658nobodyさん2006/07/02(日) 20:54:30ID:???
もしかしたら、$a[1][2][3]なら3とか深度の事?だったらない。自分で関数作るしか。
0659nobodyさん2006/07/02(日) 20:56:44ID:???
多分ないな。再帰とかで調べるしか無いと思う。そもそも
array(1, 2, array(3, array(4, 5)), array(6), 7)
は3次元配列とは呼べないと思うし
0660nobodyさん2006/07/02(日) 21:00:08ID:???
>>658
深度というのですね。ありがとうございます。
再帰的関数?を狙ってこんな事な感じで試してみるのですが深度を上手く拾う事が出来ません。
$dに深度を入れようとしているのですが合わないのです。

function box($ary,$d = 0){
foreach(array_keys($ary) as $t){
  if (is_array($ary[$t])) box($ary[$t],++$d);
}
}
0661nobodyさん2006/07/02(日) 21:24:02ID:???
660です
$dに加算する場所が悪かった事がわかりました(−−;
0662nobodyさん2006/07/02(日) 21:34:12ID:???
そうですか(−−;
0663nobodyさん2006/07/02(日) 22:03:18ID:???
ローカルサーバーでは正常に動いたのですが、
サーバーに上げると変数に入れた文字が文字化けしてしまいます。
ちなみにland.toなんですが。。。
これはサーバーの方で設定しなければ直らないのでしょうか?
0664nobodyさん2006/07/02(日) 22:27:30ID:???
EUC
0665nobodyさん2006/07/02(日) 22:32:04ID:???
「あああ」⇒「、「、「、「」
0666nobodyさん2006/07/02(日) 23:07:01ID:???
>>663
land.toのサポートの過去ログを探してみな。
0667nobodyさん2006/07/03(月) 10:58:30ID:TaHjD2Gv
PHPからHTMLに出力する際に全ての改行を除いてしまう
(つまり、出力後のページのソースを見ると改行がない)ようにするには、
どうすればよろしいですか。
0668nobodyさん2006/07/03(月) 11:01:03ID:???
>>667
\r\nを削除したら良いよ
0669nobodyさん2006/07/03(月) 11:14:25ID:???
たまには改行コードがCR+LFじゃない環境のことも思い出してあげてください
0670nobodyさん2006/07/03(月) 11:17:36ID:???
>>667
trim ($str, "\r\n")
0671nobodyさん2006/07/03(月) 11:18:29ID:???
あぁ、\rと\nを削除したら良いよ
そういうつもりで書いたのですが言葉足りなかったですね
0672nobodyさん2006/07/03(月) 11:46:47ID:???
str_replaceで、
\r\n
\r
\n
の順に ""に置き換えればいいとおもうよ。
0673nobodyさん2006/07/03(月) 11:56:16ID:???
>>672
改行コードを<br>に置き換えるんじゃなくて削除するだけなら\rと\nの二回で済むと思われる。
0674nobodyさん2006/07/03(月) 11:57:59ID:???
>>673
なるほど。お前は天才だな
0675nobodyさん2006/07/03(月) 12:02:58ID:???
preg_replace("/\r\n|\n|\r/", "", $text);
0676nobodyさん2006/07/03(月) 13:06:15ID:TaHjD2Gv
改行削除は秀丸の置換でもできるので、
PHPでもそんな感じで何とかなるとは思うのですが、
問題はHTMLを含めて改行を削除するということなのです。

現状は、よくある「HTMLの中にPHPを書いている」という状況なのですが、
この場合のHTMLの内容さえも、改行を除いて出す必要があります。

通常の出力内容を$html_beforeとし、
$html_after = 改行処理($html_before)でとして
$html_afterを出力すれば良いのですが、
そう簡単にもいかないような。

要は、出力内容を$html_beforeに格納する方法ですね。
0677nobodyさん2006/07/03(月) 13:16:31ID:???
>>676
?(・∀・) 独り言ですか
0678nobodyさん2006/07/03(月) 13:27:57ID:???
>>676
>>675
0679nobodyさん2006/07/03(月) 13:31:03ID:???
設定にもよるけど output_buffering 使えば良いかと
0680nobodyさん2006/07/03(月) 13:45:12ID:TaHjD2Gv
>>678

$textに格納できないかと...
0681nobodyさん2006/07/03(月) 13:48:13ID:???
小数点を含むの数値を比較するときはどうするのがスマートなんでしょう?
例)
<?php
$a = 1.8;
$b = 0.15 * 12.0;
echo ($a == $b ? "equivalence" : "not equivalence");
?>

桁数合わせて(キャストして)文字列として比較する?
有効桁以下を切り落とし、整数化して比較する?
0682nobodyさん2006/07/03(月) 14:21:47ID:???
>>676
ob_start
0683nobodyさん2006/07/03(月) 15:18:32ID:???
>>681
マニュアル嫁やボケナス
http://jp2.php.net/manual/ja/language.types.float.php
0684nobodyさん2006/07/03(月) 15:48:51ID:???
誰が浮動少数点のまま比較すると言ったよ池沼が。
0685nobodyさん2006/07/03(月) 15:56:24ID:???
誰が浮動少数点のままでは比較しないと言ったよ池沼が。
0686nobodyさん2006/07/03(月) 16:01:58ID:???
池沼 ←これなんて読むんだよ知障が。
0687nobodyさん2006/07/03(月) 16:11:55ID:???
>>686
スレ違いだけど一応質問には答えとこう
「ちしょう」だよ
0688nobodyさん2006/07/03(月) 16:14:44ID:???
>>686
分からないで書いていたのかw

ほんとレベル下がったなこのスレ
0689nobodyさん2006/07/03(月) 16:14:55ID:33zQh45+
有効桁って書いただろうよ。
罵倒するだけなら失せろ。
お前には聞いてねーよ。絡んでくるな。
0690nobodyさん2006/07/03(月) 16:15:44ID:???
ネタだろwww
0691nobodyさん2006/07/03(月) 16:41:04ID:???
まあ「これなんて読むんだよ知障が」って言ってるし、ネタなんだろうな。
0692nobodyさん2006/07/03(月) 16:47:58ID:???
>>681
質問の意図がわからないから答えようがない
そしてオレは浮動小数点数を比較したことがない

有効桁以下を切り落として整数化したら両方1になって誤差がありすぎると思うんだけど、それはそれで問題ない処理なわけ?
0693nobodyさん2006/07/03(月) 16:48:01ID:???
自己フォロー乙
0694nobodyさん2006/07/03(月) 16:51:56ID:???
こんにちは。
PHPで、方程式を提示すればそれをグラフにしてくれるようなモ・・なんとかってありますか?
たとえば、 y = 2x + 1 とか、 y = 2(x+3)^2 - 5 とかいう方程式のグラフを書いてくれる感じのやつです。
0695nobodyさん2006/07/03(月) 18:14:24ID:???
>>694
こんにちは
0696nobodyさん2006/07/03(月) 18:47:19ID:???
>>692
キミはアホですか。
有効桁を切り落として整数化=有効桁の分だけ100なり1000なりを掛け算して整数化って意味でしょ。
その程度の意図も読めないなら回答なんてしようと思うなよ〜

で、大小の判定まではともかく、有効桁内での等しいかどうかの比較は整数化が必須じゃないかな。
文字列にしちゃうと12.1と110.1みたいのがまともに比較できなくなるから基本は整数化じゃない?
0697nobodyさん2006/07/03(月) 19:22:43ID:???
$file=fopen('guest.dat','a');
このように書いても、サーバーにguest.datが作成されません。
find / -name "guest.dat" しても引っかかりませんでした。(sudoしています)
そこで
$file=fopen('/guest.dat','a');
としたところ、/にguest.datが作成されました。
一番上のようにディレクトリを指定しない場合はファイルは作成されないのでしょうか?
06986972006/07/03(月) 19:23:16ID:???
サーバはFedoraCore5 PHP5.1.4です。
0699nobodyさん2006/07/03(月) 19:25:53ID:???
>>697
ディレクトリのパーミッション
0700nobodyさん2006/07/03(月) 19:30:58ID:???
>>697
http://jp.php.net/manual/ja/function.getcwd.php
を使ってみるべし。
0701nobodyさん2006/07/03(月) 19:33:02ID:???
ログファイルの区切り文字って何がいいかな?
「,」はエンドユーザが入力したらマズいし、「<>」はだとちょっと面倒?


おまいらはどーしてるん?
0702nobodyさん2006/07/03(月) 19:34:18ID:???
<>
0703nobodyさん2006/07/03(月) 19:36:23ID:???
>>701
「<>」をエンドユーザが入力したらどうするんだよ?
それは置換するから大丈夫って言うなら「,」だって同じことなんじゃないかと。
0704nobodyさん2006/07/03(月) 19:38:34ID:???
>>703
<> は <> にすればいいし、 , は ? だっけ?忘れた。
個人的な好みじゃないか?
0705nobodyさん2006/07/03(月) 19:39:54ID:???
<> は &lt;&gt; にすればいいし、 , は &#44; だっけ?忘れた。
個人的な好みじゃないか?
0706nobodyさん2006/07/03(月) 19:41:41ID:???
>>704
テキストをデリミタにすると、結局はエンドユーザが入力し得るものなんだから
どうでも好きにすればいいんじゃないってこと。
自分なら \t かバイナリにするけどね。\t でも入力し得るから注意ね。
0707nobodyさん2006/07/03(月) 19:46:01ID:???
>699
ディレクトリのパーミッションを777にしたらできました!!
ありがとうございます!

>700
実行時のパスが分かるんですね。これも丁度知りたかった事です。
ありがとうございます!
0708nobodyさん2006/07/03(月) 19:48:22ID:???
>>707
えぇ!?
/ にファイルを作成出来ていることから、パーミッションの問題じゃないと思っていたんだが…
■ このスレッドは過去ログ倉庫に格納されています