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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/03/15(水) 19:18:21ID:yiOrS10N
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

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

本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/

前スレ【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/

過去スレは>>2-3あたり
0174nobodyさん2006/03/19(日) 14:28:51ID:???
php -l test.php
>No syntax errors detected in test.php
特に間違いはないけど。
0175nobodyさん2006/03/19(日) 14:33:19ID:???
session_start 使ってから header 使ってファイルをダウンロード
させようとしても上手く機能しない、という内容で、
前スレでもちょっと質問したんですが、
似たようなのを以下のページで見つけました。
なにか良い回避策はないでしょうか?

ttp://www.drive.ne.jp/iMA/showmail.pl?PHP-users=15468
0176nobodyさん2006/03/19(日) 14:46:50ID:???
>>175
検索キーワードを考えてみた。
「header mime session php」
phpのマニュアルのheader()のページのUser Contributed Notesに解決策が載ってた。
0177nobodyさん2006/03/19(日) 14:58:02ID:???
ftpでダウンロードしてきて、それをそのまま
ブラウザにダウンロードログを出して、ダウンロードさせたいのですが、
どうすればいいでしょうか?
ftp_get()で一旦ローカルにおいて、それを
ダウンロードさせる方法なら簡単に実現できたのですが、
対象ファイルが大きいため、ローカルに置かずに直接
ダウンロードさせたいと考えています。
01781612006/03/19(日) 15:07:55ID:???
>>168
私がお答えしませう。
foreachは配列に追加された順番で展開されるので、より正確に数値配列
のキーの順番で展開されるように、わざわざめんどくさいことをやってみ
ました。
0179nobodyさん2006/03/19(日) 15:26:50ID:???
特定テキストファイルの最後の10行だけ表示させるには
どうすればよかとですか?
0180nobodyさん2006/03/19(日) 15:32:08ID:???
>>179
もう少し頭を使ったほうが良いんじゃないでしょうか
0181nobodyさん2006/03/19(日) 15:32:58ID:???
>>177
FTP-HTTPブリッジか。PHPの範疇じゃないね。
それはもちっと低レベル(層)でやること。
0182nobodyさん2006/03/19(日) 15:35:52ID:???
>>179
`tail -10 filename`
0183nobodyさん2006/03/19(日) 15:45:26ID:???
>>177
ftp_fgetでSTDOUTに出力すればいいんじゃないの?
0184nobodyさん2006/03/19(日) 16:36:29ID:owkIMffO
質問です。現在ゲストブックを作り始めたところなのですが、エラーが起きてしまいます。
<?php
print <<<EOM
<html><body>
<form action="test.php" method="POST">
<FONT size="-1">N:<input type="text" name="n" size="20"> C:<input type="text" name="c" size="20"> <input type="submit" value="書き込み"></FONT>
</form></body></html>
EOM;
?>
なんですが、Parse error: syntax error, unexpected $end in D:省略test.php on line 10
というエラーが出てしまいます。どうすればいいのでしょうか。
0185nobodyさん2006/03/19(日) 16:41:53ID:???
>>184
まるまるコピーして実行したけどエラーはでなかった。
もしかすると、文字コードの設定に問題ありかも。開発環境の
文字コードとphp.iniの文字コード設定をチェック。
0186nobodyさん2006/03/19(日) 16:42:18ID:???
print を echo に変えてみよう。
0187nobodyさん2006/03/19(日) 16:47:20ID:???
>>185
ありがとうございます。
php.iniの設定いじってみます。
>>186
echoで<<<EOMのようにする場合はどのように書けばよろしいのでしょうか?
01881852006/03/19(日) 16:49:34ID:???
スマソ。なげやりだった。

php.iniの設定
mbstring.internal_encoding = SJIS <- Windowsのメモ帳で開発中なら
mbstring.http_input = auto
mbstring.http_output = SJIS <- Windowsのメモ帳で開発中なら
0189nobodyさん2006/03/19(日) 16:53:22ID:???
>>187
まんまprintの部分にecho入れてみ。

ってか>>188だろうね。
0190nobodyさん2006/03/19(日) 17:09:19ID:???
そもそもこの場合、
echo '
<html><body>
<form action="test.php" method="POST">
<FONT size="-1">N:<input type="text" name="n" size="20"> C:<input type="text" name="c" size="20"> <input type="submit" value="書き込み"></FONT>
</form></body></html>
';
と最初と最後を置き換えても問題ないわけで
0191nobodyさん2006/03/19(日) 17:11:12ID:???
>>188
いえいえ、ありがとうございます。
mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
mbstring.http_output = UTF-8
になっていました。
しかし、直してみたのですがいぜんエラーのままです。
もう少し調べてみます。
0192nobodyさん2006/03/19(日) 17:13:48ID:???
連続すいません。
多分反映されてないだけだと思います;
再起動して反映させてみます。
0193nobodyさん2006/03/19(日) 17:24:08ID:???
再起動させても変わりないのでちょっと調べてみます。
ありがとうございました。
ちなみに>>190さんのやり方だと表示されました。
0194nobodyさん2006/03/19(日) 17:38:42ID:???
>>184
EOM;の後ろに半角スペースが入ってるとか
01951852006/03/19(日) 17:41:52ID:???
>>194
確かにEOM;のあとに半角スペース入れたらエラーになった。
これは新しい発見。
0196nobodyさん2006/03/19(日) 21:31:10ID:???
<?php
print <<<EOM
<font>こんにちは。</font>
EOM;
?>
これでもエラー
Parse error: syntax error, unexpected $end in D:省略public_html\test.php on line 5
が出てしまいました。
php.iniの文字コードの部分はいじってみたのですが変化はありませんでした。
ぐぐってみたのですがよくわかりません。
何がおかしいのでしょうか…。
0197nobodyさん2006/03/19(日) 21:32:03ID:???
面白シス。
これ攻撃に使えるな(w

まず全部読み込んで、行数数えて、シークして読み直す。
あるいは1行何文字と固定長にして保存しといて、計算してシークして読む。
DB使った方がパフォーマンスは騰がる。

直接ダウンロードは無謀だな。
FTPが速くて、HTTPが遅かったら、メモリ食いつぶすよ。

ソース有るんだからmysql_query2()とか自分で作って、複数行の命令を一度に実行できるようにすればいいんじゃね?
複数エラー出た時に大変だろうけどね。
0198nobodyさん2006/03/19(日) 21:43:08ID:???
>>196
>>194は試したのか?
0199nobodyさん2006/03/19(日) 21:58:07ID:owkIMffO
>>198
はい。
EOM;の後ろには何もムダなものは入っていませんでした。
その他のところも問題ないと思います。
0200nobodyさん2006/03/19(日) 22:09:18ID:???
>>199
改行コードはどうなってる?
02011852006/03/19(日) 22:12:45ID:???
<?php ?> みたいに、終わりの?>のあとにスペースが入ってて、
2時間を費やしてそのミスに気がついたことがありましたが、そ
のへんはいかがでしょうか?
0202nobodyさん2006/03/19(日) 22:13:26ID:???
http://ns1.php.gr.jp/pipermail/php-users/2006-February/028922.html
ここ参考
0203nobodyさん2006/03/19(日) 22:14:04ID:???
http://ns1.php.gr.jp/pipermail/php-users/2006-February/028923.html
こっちだった^^;
0204nobodyさん2006/03/19(日) 22:20:26ID:???
>>201
問題ありませんでした。
>>200 , 203
なるほど。改行コードの種類でエラーが起きてしまう事があるのですね。
今私が使ってるEditerでは(EmEditer)改行の種類を変更することができるのかどうかよくわからないので
少し調べてみます。
0205nobodyさん2006/03/19(日) 22:22:44ID:???
改行を気にしてるのはマニュアルの以下の部分によりますです。
-----------引用----------------
非常に重要なことですが、終端IDがある行には、セミコロン (;)以外の他の文字が含まれていてはならないこ とに注意してください。
これは、特にIDはインデントしてはならないと いうことと、セミコロンの前に空白やタブを付けてはいけないことを 意味します。
終端IDの前の最初の文字は、使用するオペレーティングシステ ムで定義された改行である必要があることにも注意を要します。
これは、例えば、Macintoshでは \rとなります。

http://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
0206nobodyさん2006/03/19(日) 22:23:23ID:???
皆様
<?php
print <<<EOM
<font>こんにちは。</font>
EOM;
?>
のインデントを削除して見たところ正常に動作しました。
Editerが自動でインデントをやってくれるのでこれでいいものかと思っていたのがいけなかったみたいです。
皆様本当に申し訳ありませんでした。そして、ありがとうございました。
02071852006/03/19(日) 22:25:34ID:???
>>206
私も原因が気になっていたので、解決してよかったです。そして、改行
コードの件も参考になりました。
ちなみにサクラエディタなら、改行コードを選べます。
http://members.at.infoseek.co.jp/sakura_editor/
0208nobodyさん2006/03/19(日) 22:28:06ID:???
たびたび

FTPで転送してる場合テキストファイルの改行コードを変換してくれる場合もありますので
そこらへんも注意したほうがよかろうと思われますです。ではでは幸運を祈りまつ
0209nobodyさん2006/03/19(日) 22:33:13ID:lnWnX+zl
if (isset ($_GET["hoge"]) and $_GET["hoge"] == "foo") {
print ("fooおk");
} elseif (isset ($_GET["hoge"]) and $_GET[["hoge"] == "bar") {
print ("barおk");
} else {
print ("エラーちゃん");
}

みたいにして、次のような予期せぬ要求があった場合「エラーちゃん」と出力
するにはどうすればよいでしょうか?
script.php?hoge=foo&hoge=bar
0210nobodyさん2006/03/19(日) 22:37:40ID:???
>>209
よく分からんけど、try catchというのがあったかな。
0211nobodyさん2006/03/19(日) 22:46:38ID:???
>>209
同じ名前があった場合最後の奴で上書きされるんじゃないの?
その例ならbarしか抽出出来なくないか?
0212nobodyさん2006/03/19(日) 22:47:14ID:???
script.php?hoge=foo&hoge=bar
で$_GETを見てみた?barしか得られない
そのスクリプトだと
hoge=foo&hoge=abc なら、エラーちゃんにはなるな

$_SERVER["QUERY_STRING"]は hoge=foo&hoge=bar
になるのでコレを使ってなんとかせい
02132092006/03/19(日) 22:48:31ID:lnWnX+zl
>>211
あ、上書きされてますた。
PHP(・∀・)イイ!
0214nobodyさん2006/03/19(日) 23:30:27ID:QpTKRnhc
今まで気になってたんですが、

\n ってどういう意味ですか。
0215nobodyさん2006/03/19(日) 23:42:48ID:???
>>214
ラインフィード、キャリッジリターン、でそれぞれ検索してみ。
色々分かると思う。
0216nobodyさん2006/03/20(月) 03:11:08ID:???
PHP で日本語検索できるプログラムってどこかにありますか?
かなり探したんですけれども見つかりませんでした・・orz
よろしくお願いします
0217nobodyさん2006/03/20(月) 03:39:55ID:???
mb系でなかったか?
0218nobodyさん2006/03/20(月) 03:55:22ID:???
>>216
日本語で正規表現によるマッチとかって意味なら出来るけど
具体的に何がしたいのかこの説明じゃわがんね
0219nobodyさん2006/03/20(月) 05:09:27ID:???
>>216
単に検索するだけならmb_ereg()でいいんじゃ。
何をどう検索するんだ。

言っとくが、既存の完成されたプログラムを探して欲しいって話ならスレ違いっすよ。
0220nobodyさん2006/03/20(月) 05:11:13ID:???
あれだよね春進行っぽいねこのスレも
0221nobodyさん2006/03/20(月) 11:04:08ID:???
すいません、本当に下らない質問で恐縮なのですが、
メモ帳でPHP使って書いて保存するときに、
xxxxx.phpとしてもただのtxtファイルになってしまうんですが、
phpファイルってどのように作るんでしょうか?
0222nobodyさん2006/03/20(月) 11:48:34ID:???
>>221
PHPファイルってのは.phpという拡張子が付いてるだけのただのテキストファイルだがそういう意味ではなくて?
ただのtxtファイルってのはどういう意味で言ってる?
0223軟式PHP2006/03/20(月) 11:50:46ID:???
多分、凄く凄く初期レベルのお話だと思われ…。
0224nobodyさん2006/03/20(月) 11:53:35ID:???
多分じゃなく思いっきり凄く初期レベルの質問だろww
まぁいいんじゃね?たまにはこんな質問も。
0225nobodyさん2006/03/20(月) 12:05:17ID:???
拡張子非表示で実際はxxx.php.txtになってたりしてな。
0226nobodyさん2006/03/20(月) 12:25:35ID:???
>>225
これが正解だろう。

XP使ってるときは、フォルダオプションの表示の、
登録されている拡張子は表示しないをオフにする。
これでxxxx.php.txtになってるから、.txtを削ればphpの出来上がり。
もしくはFTPクライアントで名前の変更すればよし。
0227nobodyさん2006/03/20(月) 12:27:27ID:???
自分で下らない質問だと解っているからいいんじゃないの?

>>221
自分でpoor.php.txtをpoor.phpにリネームする。
もしくは保存時にファイルネームを
 "poor.php"
のように""でくくる。すると.txtを勝手に付けるというおせっかいを防げる。
もっと良い解決策は、メモ帳で*.phpファイルを書かないことだ。
0228nobodyさん2006/03/20(月) 12:49:55ID:???
最新のメモ帳はUTF-8くらいサポートしてるのかな?
0229nobodyさん2006/03/20(月) 13:03:47ID:???
>>227
自分とこで試すと、別に"で括らなくても勝手に.txtの拡張子なんて付いたりしないんだが、
XP搭載のメモ帳ってその辺の仕様が変わってるんだっけ?
>>228
対応してる。
0230nobodyさん2006/03/20(月) 13:12:08ID:???
>>229
メモ帳は基本的にどんな事であれ、拡張子に.txtをつける
0231nobodyさん2006/03/20(月) 13:12:56ID:???
>>220-221の流れがまた絶妙だな
0232nobodyさん2006/03/20(月) 13:13:00ID:???
全てのファイルで保存
0233nobodyさん2006/03/20(月) 14:26:33ID:CAF8GnmO
数字と/以外が変数に入っていたらエラーを出すにはどうしたらいいのでしょうか?
0234nobodyさん2006/03/20(月) 14:31:48ID:???
>>233
if (! preg_match('/^[0-9\/]+$/', $val)) {
print 'エラーっす';
}
0235nobodyさん2006/03/20(月) 14:32:52ID:CAF8GnmO
>>234

ありがとうございます。
0236nobodyさん2006/03/20(月) 14:33:05ID:???
preg_match('|^[0-9/]+$|', $val)

でもよか?
0237652006/03/20(月) 14:35:22ID:???
>>233
if (! preg_match('/^[0-9\/]+$/', $val)) {
print 'エラーっす';
}
0238237+2342006/03/20(月) 14:36:18ID:???
>>237
スマソ。間違えました。

>>236
よかとです。
02392382006/03/20(月) 14:38:13ID:???
>>238
さらに間違えました。文字クラスのなかも/はエスケープです。
02402392006/03/20(月) 14:42:51ID:???
>>239
あせりすぎました。デリミタが|なので/はエスケープ不要です。
今日だけで、何回間違えたのだろうか…?
0241nobodyさん2006/03/20(月) 14:44:03ID:???
if (preg_match('/[^\/0-9]+/', $val)) {
print 'エラーっす';
}

のほうが早くは無いか
0242nobodyさん2006/03/20(月) 14:45:10ID:???
激しく外出かもしれませんが教えてください。

一般的に、パラメータがn桁以下の数値かどうかを判断するのに、
正規表現で /^\d{1, n}$/
とするのと、
strlen + is_numeric
を使うのと、どちらがパフォーマンスよいでしょうか?

桁数は、極端に大きな桁数はなく、せいぜい6桁〜10桁程度です。
0243nobodyさん2006/03/20(月) 14:54:22ID:???
数値(整数)であるなら

if ($var < pow(10 , $n)) {
print 'ちいせーよ';
}

でいいのでは
0244nobodyさん2006/03/20(月) 14:55:08ID:???
ああ、数値かどうか分からないのか。すまん
0245nobodyさん2006/03/20(月) 15:16:31ID:???
>>242
strlen+is_numeric
0246nobodyさん2006/03/20(月) 15:42:59ID:CAF8GnmO
2005/12/12 の感じで日付が変数に格納されているのですが、これを年、月、日とarrayに格納するにはどうすればいいのでしょうか?

よろしくお願いします。
0247nobodyさん2006/03/20(月) 15:43:34ID:???
>>246
list($y, $m, $d) = explode("/", $date);
0248nobodyさん2006/03/20(月) 15:59:07ID:CAF8GnmO
>>247

ありがとうございます。
0249nobodyさん2006/03/20(月) 16:04:45ID:???
phpを使った他人のサイトでphpのソースを取得することはできますか?
0250nobodyさん2006/03/20(月) 16:08:25ID:???
>>249
頼めばできるかもしれません。
それから、ソースを無料で配布しているサイトもありますよ。
http://php.s3.to/
とか。
0251nobodyさん2006/03/20(月) 16:41:27ID:???
くだらない質問ですが
sql select結果を取得して、結果があれば処理をする場合
if(mysql_num_rows($result)>0)
{ $hoge=mysql_result($result,0,0); }
とするのと
if($list=mysql_fetch_array($result))
{ $hoge=$list[0]; }
とするのとどちらがよいと思われますか?
0252nobodyさん2006/03/20(月) 16:42:17ID:???
>>251
カラム1個しか使わないならresultかな
0253nobodyさん2006/03/20(月) 17:36:24ID:???
mailでヘッダを指定せずに
mail ( $to, $subject, $message)
でメールを送信した際に表示されるFromはどこで設定されているのでしょうか?
0254nobodyさん2006/03/20(月) 18:01:13ID:???
マニュアル

http://jp.php.net/manual/ja/function.mail.php
注意: メールを送信する際には、必ず From ヘッダが含まれていなければなりません。 additional_headers パラメータで指定するか、
あるいは php.ini にデフォルト値を指定します。

指定しなかった場合は、以下のようなエラーメッセージが返ります
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing 。

http://jp.php.net/manual/ja/ref.mail.php#ini.sendmail-from
0255nobodyさん2006/03/20(月) 18:55:35ID:???
>>253
自分でやってみたら?
0256nobodyさん2006/03/20(月) 19:26:35ID:???
$htm = '<a><p><b>test</b></a></p>';
$htm = strip_tags($html, '<script><style><a><p>');
print htmlspecialchars($htm);

ってやるとまともに動かないのは仕様?
strip_tagsは使うなって言われてるしねよく
0257nobodyさん2006/03/20(月) 19:32:33ID:???
>>256
> strip_tagsは使うなって言われてるしねよく

どこでこんなこと言われてるの?
0258nobodyさん2006/03/20(月) 19:35:05ID:???
>>257
言われているかは定かではないけど、Manualの警告を見る限り
あまり使わないほうが無難かもしれない。
02592562006/03/20(月) 19:42:03ID:???
2chの質問スレでよく言われてる
くだ質じゃなかったかな・・、どっちも見てるんで混乱してるかも
02602422006/03/20(月) 19:55:54ID:???
>>245
やはり正規表現処理はそれなりにリソースを食うのですね。
0261nobodyさん2006/03/20(月) 19:57:30ID:???
マニュアルにもstrip_tagsに関しては

警告
現在、strip_tags()はHTMLの検証を行わないため、
不完全または壊れたタグにより予想以上に
多くのテキスト/データが削除される 可能性があります。

警告
この関数は、allowable_tagsで許可した全てのタグ の属性を修整しません。
これには、style お よび onmouseover属性が含まれており、
悪意のあ るユーザが他のユーザに見せるようなテキストを
投稿する際に危険な行 為を行う可能性があります。

と書かれてるからね。

>>250
そこを参考にするのは微妙。
02622612006/03/20(月) 19:59:57ID:???
>>258がマニュアルのことについて既に書いてた(ノ∀`)
0263nobodyさん2006/03/21(火) 01:38:19ID:???
本文の中のメールアドレスを自動リンク(mailto:[email protected])したいのですが、
やり方がちょっと分からなくて困っています
どなたかご教授下さい
0264nobodyさん2006/03/21(火) 01:40:16ID:???
エスパーさん、出番ですよ
0265nobodyさん2006/03/21(火) 01:59:31ID:???
>>263
こういうこと?
echo preg_replace("/[\\d\\w\\.\\-_]+@[\\d\\w\\-_\\.]+?\\.[\\w]{2,3}(\\.[\\w]{2,3})?/i","<a href=\"mailto:$0\">$0</a>",
"[email protected]ご教授じゃなくてご教示");
0266nobodyさん2006/03/21(火) 02:51:52ID:???
mailto:[A-Za-z0-9_.]+@[A-Za-z0-9_.]+

これじゃダメかな
0267nobodyさん2006/03/21(火) 04:03:31ID:???
質問です

もし文中にAと言う単語を含むならC、Bと言う単語を含むならD、と言った風に条件分岐させるにはどうすればいいのでしょうか

function test($var) {
if($var == a) {
return c;
}else{
0268切れちゃいましたすみません2006/03/21(火) 04:04:39ID:???
return d;
}
}

こんな感じにしてみたいんですが、if($var == a)この部分をどう表現すれば良いのかわかりません
0269nobodyさん2006/03/21(火) 04:08:34ID:???
見ただけでウイルスに感染してしまうサイトを携帯で見てしまった場合、どうやってウイルス駆除するんでしょうか?
0270nobodyさん2006/03/21(火) 04:11:16ID:0DB4pSWb
2005/3/4 や 2006/11/23 のように日付が変数に格納されているのですが、これを 20050304 や 20061124 のように数値化するにはどうすればいいのでしょうか?

よろしくお願いします。

0271nobodyさん2006/03/21(火) 04:56:08ID:???
>>267
$q = preg_quote($A);
if (preg_match("/^$q\$|^$q\\W|\\W$q\$|\\W$q\\W/i", $var))
// もっといいやり方あるかも・・・

>>270
(int) date('Ymd', strtotime($str));
0272nobodyさん2006/03/21(火) 04:56:27ID:???
>>267
よし、正規表現を勉強してきなさい。
難しくないからさ。簡単にで良いから。
ちなみにそのif分では、$varの中身がaかどうか、になってしまうよ。

>>269
よし!スレタイを百回読み直して来い!

>>270
俺ならsplitして文字列結合しちゃう。
0273nobodyさん2006/03/21(火) 05:19:42ID:???
>>270
>2005/3/4 や 2006/11/23
1桁があるなら俺は>>271だな
■ このスレッドは過去ログ倉庫に格納されています