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

【PHP】下らねぇ質問はID出して書き込みやがれ 76

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/11/13(木) 04:15:32ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0666nobodyさん2008/11/27(木) 13:42:38ID:7SaHUKLW
>>662
レスありがとうございます。
副問い合わせ
調べてみます。

>>663
エスケープ、、、いまいち理解していないと思います。

$move_price = stripslashes($move_price[$i]);

と試してみたのですが、文字化けは直りませんでした。。。
0667nobodyさん2008/11/27(木) 13:56:46ID:???
どこで化けたか、もう少し正確で詳細な情報を。
0668nobodyさん2008/11/27(木) 13:56:51ID:VS9OEG/Z
>>660
http://nonn-et-twk.net/twk/why-set-names-in-php-is-bad
のようなことではないでしょうか。
06696602008/11/27(木) 14:12:12ID:7SaHUKLW
>>665
ありがとうございます。
この方法では化けずにコピーできました。

>>667
どこで化けたか正確にわからないのですが、
b.phpのINSERT直前で var_dump($move_price); としても
化けていませんでした。
b.phpを走らせhogehogeに格納されたデータを
phpmyadminで確認したところ化けています。
c.phpでも化けて表示されてしまいます。

>>660
そのページはググって見つけました。
b.phpに
mysql_set_charset("sjis");
と記述してみたけど使い方が悪いのか文字化けは直りませんでした。
0670nobodyさん2008/11/27(木) 14:27:38ID:???
普通はDBに文字列を突っ込む前にエスケープするもの。
たとえば、mysql_escape_string等で。
文字化けが起きないというa.phpでもやっとくべき。
それで化けるならむしろDBとの文字コード変換部分をチェックする必要がある。
このとき、内部エンコーディングとかが影響するので、
詳細な情報がないとエスパーするにも限界がある。
06716602008/11/27(木) 15:40:26ID:7SaHUKLW
>>670
mysql_escape_stringを調べてみて
mysql_real_escape_stringを使ってみたところ
見事文字化けは解消されました。

まだまだ基本的な事がわかっていないので、
コツコツと勉強します!!


大変勉強になりました。
皆さまどうもありがとうございました。
0672nobodyさん2008/11/27(木) 16:15:12ID:nVMghs4x
野球,1
サッカー,2
テニス.3

という内容がテキストファイルに書き込まれていたとします。
例えば、野球の行の数字を2に変えたい時、どうすればいいのでしょうか?
イメージとしては、行を取得してその行の数字の部分を新しい数字に置換
すればいいのだと思っていますが、特定の行だけ取得する事って出来るのでしょうか?
0673nobodyさん2008/11/27(木) 16:20:51ID:???
それは無理なので全部読み込め
0674nobodyさん2008/11/27(木) 16:20:54ID:???
質問者はまず>>1を良く読むこと(必須!)
06756722008/11/27(木) 16:26:55ID:nVMghs4x
>>673
と言う事は、全部読み込んで一行ずつ処理し、
strstrなどでその行に「野球」という文字が含まれていたら
野球,2 という文字列に置換するという考え方でよろしいのでしょうか?
0676nobodyさん2008/11/27(木) 16:29:11ID:???
まあそんな感じだけど、同一ファイルで読みながら書くのはやめたほうがいい。
長さが違うと不可能だし。
0677nobodyさん2008/11/27(木) 16:50:13ID:nsjkEY4z
正規表現で複数行にまたがるマッチングって出来ませんでしたっけ?
$output = "foo\nbar";
preg_match('/.+/m', $output, $matches);
print_r($matches); //foo
しか出力されないのですが

なんか方法ありましたっけ?
なければ行ごとに分解するか、逆に改行を何かに置換するか・・・

お願いします。
0678nobodyさん2008/11/27(木) 16:53:03ID:???
/.*/s
06796772008/11/27(木) 16:56:30ID:???
ああ、そっちでしたか。ありがとうございます。
0680nobodyさん2008/11/27(木) 17:20:51ID:???
[[文字列>URL]]で<a>に置換してリンクできるようにしたいのですが
そのために文字列とURLを抜き出したいのですがどうすればいいでしょうか
[[ ]]の中だけは抜き出せるようになったのですが
\[\[([^\[]+)\]\]
0681nobodyさん2008/11/27(木) 17:50:09ID:???
正規表現だけの話でPHPとは関係ないだろ
っていうかID出せやコラ
ていうかPukiWikiの真似ならPukiWikiのソース見れやコラ
06826722008/11/27(木) 18:59:09ID:nVMghs4x
>>676
なるほど。
じゃ、読み込んで新規ファイルに追加し、元ファイルを削除。
って流れが一番良さそうですね。

2ちゃんのログ検索とかどうしてるんでしょうね。
たぶんDBは使って無さそうだし。でも、結構速いし。
06836802008/11/27(木) 19:15:46ID:???
>>681
おちつけよwただの誤爆だw
pukiwikiは見たがわからなかったから質問した。
0684nobodyさん2008/11/27(木) 19:19:25ID:???
>>682
へ?2chのログ検索ってDATファイルを開いて検索して書き直してんの?
0685nobodyさん2008/11/27(木) 21:53:53ID:???
このスレで質問すれば誰かが見てくれるかもしれないですよ。
ただ催促すると放置される可能性があるので注意して下さいね。

基本、回答者に対して命令口調はやめてください。気分が悪いです。あなたは何様ですか?
回答者はいわば神です。一方、あなたは単なる質問者です。
神に対してはみんな、お願いをするものです。
平民以下の単なる質問者のくせして、神に命令するなんておかしいと思いませんか?

回答者はボランティアです。
自分の気分次第で嫌いな質問をスルーしたりすることに対しては何の問題もありません。
私は基本的に、自分の好きな時間に、自分が嫌いな質問や自分の嫌いなコテが書き込んだ質問を思う存分、集中的に叩きます。
自分勝手に私利私欲で叩きまくるのが基本です(笑)
私がPHP板の神ということを忘れないで下さい。
神を怒らせるととんでもないことになりますよ。
ヤスヒロや穴子という方をご存知ですか?彼は私を怒らせたのでまともな質問でも見つけ次第罵詈雑言浴びせまくっています。

その態度なんなんですか?
とても気に入らない質問の仕方です
0686nobodyさん2008/11/27(木) 21:57:06ID:???
なにこれ
0687nobodyさん2008/11/27(木) 22:05:59ID:???
>>686
荒らすな
0688nobodyさん2008/11/27(木) 22:15:45ID:Y4lx+bCY
質問

自分が使ってるレンタルサーバーは
sendmailが停止されてるんだが、
この状態でもサーバーからメールを送ったりできるの?

PHPに独自に組み込まれたメール送信関数等を使って。
0689nobodyさん2008/11/27(木) 22:18:51ID:exzeZtET
PHPのアクセス解析で[ gethostbyaddr ]関数を使って
ドコモユーザなど判別しているんですが
もっと詳しくドコモ関東、ドコモ九州など地域まで
判別するのは不可能なんでしょうか?
0690nobodyさん2008/11/27(木) 22:23:45ID:Y4lx+bCY
>>689
IPアドレスの範囲で調べるとか?
0000−1111なら関東
4444−7777なら九州

とか、あらかじめ調べておいて、きめうち。
0691nobodyさん2008/11/27(木) 22:25:57ID:???
>>688
そのレンタサーバの公式見てメール使えないとか書いてあるなら使えない
0692nobodyさん2008/11/27(木) 22:37:37ID:???
0000−1111笑

>>691
ええかげんに
0693nobodyさん2008/11/27(木) 23:08:09ID:???
>>688
phpのバージョンは?
php.ini等でSMTPに自前のSMTPサーバーを指定してやればできる可能性はある。
ポートが塞がれていたらちょっと工夫が必要になるだろうけど。
0694nobodyさん2008/11/27(木) 23:14:36ID:xeQLOWxL
phpの拡張機能でMS ACCESSのデータベースファイルを読み書きすることは可能でしょうか?
0695nobodyさん2008/11/27(木) 23:25:32ID:???
PHPもこのように教えて欲しい
http://jp.youtube.com/watch?v=C5Kp4VL77b8&feature=related
0696nobodyさん2008/11/28(金) 01:35:36ID:dY3rvFPa
質問

「ボタンを押したら、文字列が表示される」

ってプログラムを書こうとして、その予習として、


<form action = "1.php" method="POST">
<input type="submit" value="a">
</form>
<?PHP
print $_POST;
?>

こういうプログラムを書いたんだけど、これを実行すると
ARRAY
って出るんだけど、どういうこと?
素人目には、理解不能は仕様なんだけど?
0697nobodyさん2008/11/28(金) 01:39:49ID:HHS1We1t
694>>可能
695>>そうだね。
696>>エラーなんだが

0698nobodyさん2008/11/28(金) 01:54:20ID:???
なんでアンカーが反対なの?
0699nobodyさん2008/11/28(金) 01:58:46ID:dY3rvFPa
<form action = "2.php" method="POST" >
<input type="submit" name="a" >
</form>

<?PHP
if (isset($_POST["a"])) {
print "hello";
}
?>

これで、できたわ。
0700nobodyさん2008/11/28(金) 02:08:14ID:???
>>695
PHPでどうやってそんな風に教えればいいんだ
この関数は再帰だから〜、とか、関数力つけておきましょう、とか?
0701nobodyさん2008/11/28(金) 02:26:28ID:dY3rvFPa
>>700
ただコードを「ベタッ」とはりつけてきて
補助的な解説が皆無なのがムカツクの。
0702nobodyさん2008/11/28(金) 02:28:19ID:???
>>701
具体的にどんな解説があったらええのん?
0703nobodyさん2008/11/28(金) 03:07:13ID:???
コードの流れを教えて欲しいな。
再帰とか頭がこんがらがってしまうから、
フローチャートを使いながら説明するとか。
0704nobodyさん2008/11/28(金) 03:18:35ID:???
何というボランティア精神養成講座
0705nobodyさん2008/11/28(金) 03:48:54ID:???
再帰ってフローチャートで書いても再帰以上に分かりやすく書けないような・・・
0706nobodyさん2008/11/28(金) 07:54:41ID:???
人に教えるのって難しいよね
まあこの程度しかできないとおもうけど・・・
http://jp.youtube.com/watch?v=P9cLDqHfyoc&feature=related
0707nobodyさん2008/11/28(金) 09:17:02ID:???
さぁ週末だ♪いま陽が昇る♪
0708nobodyさん2008/11/28(金) 09:39:51ID:eL/0HM2w
質問

なんでお前ら馬鹿なの?
0709nobodyさん2008/11/28(金) 10:06:45ID:???
>>706
これはあまりよろしくないな
こんなこと頑張って覚えても実際の業務に何の役にも立たないし
このような概念的なことは教本見れ自分で勉強すれば済むこと
0710nobodyさん2008/11/28(金) 11:37:08ID:skXTPrJy
public function &createNew($params) {
//code here
}
このとき、functionについている「&」はどういう役割をしているのでしょうか?
0711nobodyさん2008/11/28(金) 12:13:10ID:???
>>710
調べてみた
http://d.hatena.ne.jp/cloned/20060510
0712nobodyさん2008/11/28(金) 13:54:03ID:???
いやマニュアル見ようよ
http://jp2.php.net/manual/ja/functions.returning-values.php
http://jp2.php.net/manual/ja/language.references.return.php
0713nobodyさん2008/11/28(金) 15:51:04ID:skXTPrJy
>>711
ありがとうございます。
よくわかりました。

>>712
なるほど、マニュアルに書いてあったんですね。
ありがとうございました
0714nobodyさん2008/11/28(金) 21:21:59ID:fzzy5FaA
文字の後、<br/>\nみたいに改行の意味を2つ続けて書くのはなぜですか?
0715nobodyさん2008/11/28(金) 21:24:16ID:???
そりゃおまえあれやがな
ウェブで見てもエディタで見ても改行されて見えるからやがな
0716nobodyさん2008/11/28(金) 21:35:12ID:fzzy5FaA
>>715
意味がわかりませんが
0717nobodyさん2008/11/28(金) 22:02:12ID:???
715じゃないが実際にやってみればわかるが
<br>\n<br>\nってやれば
出力されるhtmlのソースは
<br>
<br>
という具合に改行されるが、
<br><br>とやれば
そのまま<br><br>と改行されずに出力される

ソースの見た目であってhtmlの見た目上は問題ない
0718nobodyさん2008/11/28(金) 22:27:32ID:dY3rvFPa
PHPで書かれたフリーのメール送信フォームで
最強、定番のって、どれ?

自動スクリプトで5000通とか送信されて
ぶっこわれたりしない、対策がちゃんと考えられてるやつ。
0719nobodyさん2008/11/28(金) 22:41:20ID:dY3rvFPa
http://kazuizm.com/2007/01/05-222959.php

アホが作るとこういう悲惨なことになるから。
最初からちゃんと聞いたほうがいい。
0720nobodyさん2008/11/28(金) 22:46:47ID:dY3rvFPa
ちょっとまった。

もしかして、サーバー側で
sendmailが停止されている場合、
メール送信フォームを設置しても
動かない可能性が高いのか?
0721nobodyさん2008/11/28(金) 23:04:13ID:???
PHPはコンパイル時に関数も制限できるはず。
0722nobodyさん2008/11/28(金) 23:06:34ID:???
http://jp2.php.net/manual/ja/mail.setup.php
コンパイル時にsendmailのパスを含んでないと駄目。

サーバ管理者がメール送らせたくないって思ってんだから諦めろ。
0723nobodyさん2008/11/28(金) 23:10:48ID:HHS1We1t
sendmail関数を使えないサーバーってあるの?
qmailとかで送れってか?
0724nobodyさん2008/11/28(金) 23:37:30ID:???
PHPにはsendmail関数なんてないだろ。
PHPにあるのはmail関数。

mail関数を使っても、送られてきた情報を
そのままアパッチのsendmailに丸投げするだけだけど。
0725nobodyさん2008/11/28(金) 23:56:55ID:???
アパッチのsendmail?
0726nobodyさん2008/11/29(土) 00:00:45ID:???
php.iniに
sendmail_path = /usr/sbin/sendmail
と
SMTP = localhost
smtp_port = 25
っていう設定があるけど、mail関数を使った時は、sendmailコマンドに
送られるのかね、それとも、SMTPを直接叩いてくれるんだろうか
0727nobodyさん2008/11/29(土) 00:15:45ID:???
>>726
sendmail に丸投げするだけでしょ
0728nobodyさん2008/11/29(土) 01:35:49ID:???
SMTP鯖に投げられるのはWindows版の仕様、ってマニュアルに書いてなかったっけ?
0729nobodyさん2008/11/29(土) 01:52:20ID:Zwy93qXL
sendmailコマンドに送られる
0730nobodyさん2008/11/29(土) 08:12:28ID:Q7h0AD5b
自分もメールシステム作ってみようかと思ってるんだけど、
やっぱりZendFWやPearの本に載ってるような簡単なサンプルじゃ
大量の送信とかでエラー起こすものなんですか?
0731nobodyさん2008/11/29(土) 08:19:35ID:???
どこでエラーがおきるっていうんだい?
0732nobodyさん2008/11/29(土) 09:19:26ID:???
>>730
その簡単なサンプルがどの程度のものか知らんが、
スパムメール配信システムでも作るの?

メールサーバーによっては同時配信数に制限をかけているものがあるから、
その最大数に合わせて分割配送とか独自のキューを実装する必要があるかもね。
Web経由でやるんなら、タイムアウトとかもケアするとか。
0733nobodyさん2008/11/29(土) 09:20:37ID:???
スパマーだろ
放置放置
0734nobodyさん2008/11/29(土) 10:14:58ID:Q7h0AD5b
>>732-733
いや、そんなの作る気ないよ>スパム
せっかくサーバ借りるからやってみようって好奇心だけなんだけど
変なものできてトラブりたくないから聞いてみた 気に障ったならごめんね
0735nobodyさん2008/11/29(土) 14:10:37ID:???
mysql_connect() or die;
とかの or die の使い方がのっているマニュアル該当部分てありますか?
探したんですが、orじゃ検索できないしいまいち動作がはっきりしないので情報を探しています。

論理演算子の or と同じ意味でしょうか。
0736nobodyさん2008/11/29(土) 14:24:46ID:???
>>1
07377352008/11/29(土) 14:27:57ID:khza+QN5
test() and print("after or!");

function test(){
print "in test()!!";
return true;
}

とか色々やってみてやっぱり演算子なんですね。
しかも、die以外もprintなら使えるけど、date()は使えない。
でも、自作関数使えるみたいで
test() and test();
は出来た。

dateは駄目で、自作関数は駄目って基準が分からないw
0738nobodyさん2008/11/29(土) 14:29:57ID:???
マニュアル読め
0739nobodyさん2008/11/29(土) 14:37:15ID:???
>>737
式を評価する優先度と順番の問題。
A or B
でAがtrueならBは評価しない。だから、Aがfalseの時にしたい処理をBに書く。
C and Dで
CがfalseならDは評価しない。
0740nobodyさん2008/11/29(土) 14:43:38ID:???
>>739
737のはどちらも実行されますよ。
その上でprintと自作関数は実行されるのに、dateとかは駄目というのが現在の疑問です。

>>738
論理演算子
http://www.php.net/manual/ja/language.operators.logical.php
は読んだんですが・・。

ここまで書いて、booleanを返さないといけないということに気づきました。
ありがとうございました。
07417352008/11/29(土) 14:48:51ID:khza+QN5
下記の通りで問題なく、他の関数も実行できました。
dateに限ってはprintを実行してなかっただけという orz

test() or print(date("Y"));

function test(){
print "in test()!!";
return false;
}

function test2(){
print "in test()!!";
//return false;
}

0742nobodyさん2008/11/29(土) 14:51:43ID:???
うーん、釣り?
function testがtrue返してんだから、
test() and test()
は、最初がtrueだから、次をチェックしにいくんだから、両方実行されて当然でしょ。
仮にtestでfalse返してみなよ
test() and test()は1度しか実行されないから
07437452008/11/29(土) 14:52:05ID:???
補足ですが、>>740の「booleanを返さないといけない」は大嘘ですね、すいません。
だらだらと書きましたが、誰かの参考になれば幸いです。

test() or ($test = date("Y"));
print $test;

function test(){
print "in test()!!";
return false;
}

とかやって、エラーフラグを変数に代入していけば、一個ずつif書くよりいいかもとか思いました。
0744nobodyさん2008/11/29(土) 14:52:19ID:???
date()は空文字返すでしょ
0745nobodyさん2008/11/29(土) 14:52:27ID:???
or dieはperlの真似した特殊な式だから
perlのほうで調べてみ
0746nobodyさん2008/11/29(土) 14:53:07ID:???
printの返り値とか考えてる?
07477352008/11/29(土) 14:54:31ID:khza+QN5
>>742
えーと、そこは意図してそのような動作に・・。
既に書きましたが、test() or の後にdie以外を見たことが無かったので試していたら混乱したということです。
結果的には普通に何でも出来ますね。

アドバイス頂きありがとうございました。
0748nobodyさん2008/11/29(土) 15:00:07ID:???
>>1も読まないマニュアルも読まずに見当違い質問して混乱させるとかひどい
07497352008/11/29(土) 15:01:17ID:khza+QN5
>>744,746
なるほどそのあたりも漏れてました。
しかし、>>741のtest2()で試したところ返り値があるかないかは、論理演算子の右辺は関係ないかと。

>>745
情報ありがとうございます。
perl絡みで調べてみます。
どうもこの構文はPHPとしては唐突でしっくりこなかったんですが、そういう経緯もあるんですね。
07507352008/11/29(土) 15:02:35ID:khza+QN5
>>748
ここってくだ質じゃないんですか?
何か勘違いしていたらすいませんw
0751nobodyさん2008/11/29(土) 15:07:41ID:???
くだらない質問用スレだけど下らない人間用スレじゃない
いい加減にしてくれ
0752nobodyさん2008/11/29(土) 15:20:06ID:???
perlかphpかは関係ないと思うな。
構文のパースに過ぎないんだから。
チューリングマシンの基礎だな。

> 論理演算子の右辺は関係ないかと。

そう書く気持ちはわかるが、そういう考えでは本質は理解できんよ。
0753nobodyさん2008/11/29(土) 15:28:41ID:???
くだらない質問用スレだけど、下らない回答者用のスレでもないがな
07547352008/11/29(土) 15:34:46ID:khza+QN5
>>752
個人的には基礎が足りないというのは理解しております。。
もしよろしければですが、どういうアプローチをしたら右辺の意味について理解できるでしょうか?
0755nobodyさん2008/11/29(土) 15:57:48ID:Q7h0AD5b
>>751
「まあ答えてやるか」って人間がいる限り、そういう書き込みが一番空気悪くする
いやなら答えなきゃいいし見なきゃいいだけだと思うが
0756nobodyさん2008/11/29(土) 16:27:03ID:yRFYIZ4c
じゃあまとめるね。
・式だけでも正しい構文
・PHP では and/or は短絡評価
・functionはreturn文が実行されなかったときはNULLを返す
バージョンによる違いは調べてません。
0757nobodyさん2008/11/29(土) 17:19:53ID:N9fdCVij
Zend_Dbでは、行、カラムを指定してfetchOneすれば、
単体の値を抜き出せるのに、Zend_Db_Table使うと、
結局イテレータで出てきちゃうので、
$row->カラム名
ってしないと値が取り出せず、面倒な気がするんですけど・・・。

何か良い解決方法があったら教えてください。

0758nobodyさん2008/11/29(土) 17:30:09ID:???
ZFスレで聞けよ
07597352008/11/29(土) 17:30:45ID:khza+QN5
>>756
ありがとうございます。
・式だけでも正しい構文
というのは計算式だけでもOKって事でしょうか?

自作関数だけでもnullが返ってるんですね。勉強になりました。
たしかにvar_dumpで見たらnullが返ってました。
これもざっと見るとマニュアルに書いてないような・・。

やっぱりorの両辺は返り値(何らかの値)が無ければ駄目って事かな・・。
0760nobodyさん2008/11/29(土) 18:44:16ID:???
>>759
論理演算子で解釈できるようなものならOK
基本、関数ならいいけど命令ならダメ。
右辺なら関係ないとかやめてね
test1() or test2() or test3()
こういうことも可能なわけで、右辺はいつでも左辺になる可能性がある。
test() or echo "error";とかダメだから
0761nobodyさん2008/11/29(土) 18:55:54ID:yRFYIZ4c
2項演算子の右と左を右辺、左辺というのですか?
0762nobodyさん2008/11/29(土) 18:57:37ID:???
式だろ
0763nobodyさん2008/11/29(土) 19:02:02ID:???
左辺値/右辺値
0764nobodyさん2008/11/29(土) 19:04:04ID:???
うーんまぁ、式なんだけど、彼流に言えばって話
0765nobodyさん2008/11/29(土) 20:05:02ID:dnGnExVM
あるオブジェクトが、
自分に渡された引数が自分自身(同じインスタンス)かどうかを調べるには
どうすればいいですか?
===は、ちょっと違いますよね?
■ このスレッドは過去ログ倉庫に格納されています