【PHP】下らねぇ質問はここに書き込みやがれ 28
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/03(日) 21:01:08ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0521nobodyさん
2006/09/10(日) 18:29:53ID:???ってでますけどどこかおかしいですか↓
for($n=0;$n<sizeof($ArrKeyword);$n++){
if(!eregi($ArrKeyword[$n],$lines)){
$Match=false;
break;
0523nobodyさん
2006/09/10(日) 18:50:38ID:???そういうときはeregiに何が渡されるかを(echo等で)取得してeregi一文で試すんだよ。
こういったことを繰り返せば問題解決する。
0526521
2006/09/10(日) 19:49:38ID:???0527nobodyさん
2006/09/10(日) 20:07:28ID:R17hn9Opmb_send_mailで送るメール本文に上で揃えたものをつけてもずれてしまいます。
どうしたらよいのでしょうか?
例 ↓の円を揃えたい
+消費税 ?円
+送料 ?円
?の所は桁が変わるので +消費税".str_pad(number_format($money),15," ","str_pad_left")."円等とやってます。
0529527
2006/09/10(日) 20:15:43ID:R17hn9Opstr_pad(number_format("+消費税".$money),15," ","str_pad_left")."円
な感じでやってます。
あとメール本文だけじゃなくて普通に表示しても駄目でした
0531nobodyさん
2006/09/10(日) 20:28:51ID:???っていうかお前
number_format("+消費税".$money)
の部分おかしくね?
よく分かんないなら
str_pad と number_format を切り離して考えて味噌
というよりmoney_formatのほうがいいんじゃ
0532nobodyさん
2006/09/10(日) 22:05:20ID:???教えてるやつらも低レベルやし。 まじ笑えるw
ここみるとPGとして優越感にひたれるから好きw
0533nobodyさん
2006/09/10(日) 22:54:19ID:???自分はレベル低いですって言ってるようなもんだよ。
0534(^ω^) ◆shPHP/.kPI
2006/09/10(日) 22:55:25ID:???0535nobodyさん
2006/09/10(日) 23:29:35ID:???0536521
2006/09/10(日) 23:49:51ID:VGwX15XGわけワカメなのは何度かリロードするとちゃんと検索結果が出てくるんですよ
なんなんでしょ?
0539nobodyさん
2006/09/11(月) 00:17:49ID:Os5jvMFzリロードすると問題なく検索結果が反映されるので、値は入ってると・¥・
$lines=strip_tags($Data[$i]);
if(eregi($KeyWord,$lines)){
array_push($Result,$Data[$i]);
こうすると問題ないのですが、1語でしか検索できずまいります。
0540nobodyさん
2006/09/11(月) 00:26:24ID:???おい、話が変わってるんじゃない?
「一回リロードするとOK」なのか「何回かリロードすると偶発的にOK」なのかハッキリしろ
しかも>>521のソースにはstrip_tagsもarray_pushも入ってないだろ
それにちゃんとechoで値をチェックしたのか?値が入っていたらちゃんとそのif文に引っかかるんだろ?
0541nobodyさん
2006/09/11(月) 00:32:43ID:Os5jvMFzオリジナルは↓
$KeyWord=$_GET["key"];
$KeyWord=htmlspecialchars($KeyWord);
$KeyWord=mb_convert_encoding($KeyWord,"EUC-JP","auto");
$KeyWord=mb_convert_kana($KeyWord,s);
$ArrKeyword=explode(" ",$KeyWord);
$Result=array();
$Data=file("ほげほげ.csv");
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
$Match=true;
for($n=0;$n<sizeof($ArrKeyword);$n++){
if(!eregi($ArrKeyword[$n],$lines)){
$Match=false;
break;
}
これで「何回かリロードすると偶発的にOKです」。 それと時折文字化けします。
でっ、↑を
$lines=strip_tags($Data[$i]);
if(eregi($KeyWord,$lines)){
array_push($Result,$Data[$i]);
に変えると1語でしか検索できませんが、文字化けも、エラーもでません。
がっ、1語でしか検索できず困ります。
0542nobodyさん
2006/09/11(月) 00:43:57ID:???var_dump($ArrKeyword);
0543nobodyさん
2006/09/11(月) 00:44:02ID:???いくつか間違いがあるぞ
$KeyWord = mb_convert_encoding($KeyWord,"EUC-JP","auto");
まずこれ。mb_convert_encodingの第2引数にautoを入れると環境によって何故か上手く動かないことがある。
だからちゃんと文字コードを指定すること。「偶発的に〜」って部分は多分これのセイだと思う。
あとmb_convert_kana($KeyWord,s)、こいつの第2引数は本当にこの書き方で良いのか?
ちょっとマニュアルで確認してみろ
0545543
2006/09/11(月) 01:26:28ID:???×mb_convert_encodingの第2引数にauto
○mb_convert_encodingの第3引数にauto
だった
0546nobodyさん
2006/09/11(月) 01:33:52ID:???$KeyWord=mb_convert_kana($KeyWord,s);
に問題ないとおもわれw
0548nobodyさん
2006/09/11(月) 01:40:15ID:???> $KeyWord=mb_convert_kana($KeyWord,s);
> に問題ないとおもわれw
本気で言っているのか?
0550nobodyさん
2006/09/11(月) 01:49:02ID:???0551nobodyさん
2006/09/11(月) 01:55:01ID:???0552nobodyさん
2006/09/11(月) 01:59:57ID:???関数はその関数のみでテストしてから使おう。
0554nobodyさん
2006/09/11(月) 02:14:11ID:???しばらく待ってあげてください。w
0555nobodyさん
2006/09/11(月) 02:18:12ID:???他の板じゃまず考えられない。
そして人間のレベルが高い。センスもまあまあ。
プログラマは遊び心ある日とが多いかも分からんからね
俺はここで筆問して解決できなかったことが無いんだもんね
0557nobodyさん
2006/09/11(月) 02:29:28ID:???0558nobodyさん
2006/09/11(月) 02:33:39ID:???0559nobodyさん
2006/09/11(月) 02:58:21ID:???寝よっと
0560nobodyさん
2006/09/11(月) 03:07:32ID:???0563560
2006/09/11(月) 03:42:37ID:???0564nobodyさん
2006/09/11(月) 03:56:28ID:???文字コード関係の問題だった・・変換して受け渡しやったら正常に動いたよ。
スレに聞きに来る皆も、うっかり指定し忘れたりしないように気を付けよう orz
とまぁこういうわけで、聞こうか悩みながらやってたら自力解決したし寝るノシ
0565nobodyさん
2006/09/11(月) 04:18:14ID:???ホントにそれ普通のリロードなのかな…
原因自体はkeyってパラメータの末尾に空白がくっついちゃってるかどうかだと思うんだけど。
> $ArrKeyword=explode(" ",$KeyWord);
ここで空白区切りで検索キーワードを分解してるけど、これだと末尾に空白があると
$ArrKeywordの最後の項目が "" っていう空っぽの単語になっちゃうでしょう。
> eregi($ArrKeyword[$n],$lines)
eregの検索キーワードで「空っぽ」ってのは許容されず、
> Warning: eregi() [function.eregi]: REG_EMPTY
のエラーが出ちゃうので、事前に空っぽデータが無いかチェックしないといけない。
あと他に、完全な空っぽでなく正規表現として不正なキーワードになってる可能性もある。
文字列に[だけ含んで]が無いとか、\を含んじゃってるとか。
正規表現として正しくないとやっぱりエラーになるので、ユーザが自分で検索キーを
入力するようなプログラムで検索にeregを使うのは良くないよ。使うならquote_meta()せんと。
正直、このプログラムなら
> if(!eregi($ArrKeyword[$n],$lines)){
は
if($ArrKeyword[$n] != '' && strpos($lines, $ArrKeyword[$n]) === FALSE) {
の方が適切なんじゃなかろうかと思うんだが。
検索キーワードにそんな変な記号は含んでない!という場合でも、
Shift_JISで漢字の中に正規表現記号を含んでしまっている場合がある。
> $KeyWord=mb_convert_encoding($KeyWord,"EUC-JP","auto");
でeuc変換してるはずだから大丈夫!と思ってても、元のキーワードが短いと
文字コード判定に失敗してしまって変換されないケースがあるので危険。
0566nobodyさん
2006/09/11(月) 11:17:31ID:???$Keywd=htmlspecialchars($_GET['key']);
$Keywd=mb_convert_encoding($Keywd,"auto");
$Keywd=mb_convert_kana($Keywd,"s", EUC-JP");
$Keywd=ereg_replace("and"," ",$Keywd);
$Keywd=ereg_replace(" "," ",$Keywd);
$Data=file("item.csv");
?>
<?php
if($Keywd!=""){
$Result = array();
for($n=0;$n<sizeof($Data);$n++){
$line=explode(",",$Data[$n]);
$arrSentence = strip_tags($Data[$n]);
$arrKeyword = explode(" ",$Keywd);
for($i=0; $i<sizeof($arrKeyword); $i++) {
$flgMatched = true;
if(!eregi($arrKeyword[$i], $arrSentence)) {
$flgMatched = false;
break;
.......
if($flgMatched) {
array_push($Result, $Data[$n]);
..
コピペだけどこっちのほうがいいんじゃない?
0567nobodyさん
2006/09/11(月) 11:29:06ID:???あとは先頭に
mb_regex_encoding("EUC-JP");
してみるとか。
0568nobodyさん
2006/09/11(月) 12:11:20ID:???541と566の構文ではどっちがいいのでしょうか?
0571568
2006/09/11(月) 12:31:59ID:???PHPの勉強もかねて、まずはコピペからでもはじめたいのですが、
もしまともなコードがあるならソースを教えてもらえないでしょうか?
ちなみに検索したらばっちり541と566を見つけられましたが、なかなか
他がないです。
0572nobodyさん
2006/09/11(月) 12:55:10ID:???0573568
2006/09/11(月) 13:19:05ID:???0574nobodyさん
2006/09/11(月) 13:25:55ID:???お手本を丸ごと「書写(自らタイプ)」するなら、たしかに一定の勉強効果はある。
しかし「コピペ」するなら、全く勉強にならない。
0575500
2006/09/11(月) 13:36:55ID:???$Result=array();
$Data=file("商品.csv");
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
$Match=true;
現在の「商品.CSV」からの全体のデータではなく、$line[0]と$line[30]のデータ内のみから
検索データを抽出したいのですが、どうすればいいのでしょうか?」
if($i != 0 && $i != 30) continue;
for($i=0;$i<=30;$i++){
? array_push($Result, "ageてIDを出せこのやろう");
}
$search = array(0,30);
for($i=0;$<=sizeof($Data);$i++){
? if(!in_array($i,$search)) continue;
? echo("それともこうか?このやろう");
}
などいろいろご回答ありがとうございました。
ただ、行データの$line[0]と$line[30]ではなく、列のデータの$line[0]と$line[30]なんですが、
特定の列のデータを抽出するにはどうしたらよいでしょうか?
0576nobodyさん
2006/09/11(月) 14:05:40ID:???$Match=true; っていうのは流行なのか
てっきり同じ人だと思ってたが
とりあえずfgetcsvでも使って評価してみたら?
0577nobodyさん
2006/09/11(月) 14:10:51ID:???あんたは全く理解してないから、まずは簡単なことからしたら?
たとえば、
1.商品データの三行目の二列目を$aに入れてみる。
2.1が出来たら、次は全部の行の二列目を$a[]に入れてみる。
3.2が出来たら、次は全部の行の二列目が1(←なんでもいい。完全一致==で)のものを$a[]に入れてみる。
4.3が出来たら、最後に全部の行の任意の列に文字列$keyが含まれるものを$a[]に入れてみる。
これくらい順序踏めば、頭の悪いあんたでもわかるんじゃね?1すらできないなら諦めるべきだな。
0578nobodyさん
2006/09/11(月) 14:56:43ID:???ヒントもらったりすればできるようになるが
10段も上のことやろうとしたらヒントもらっても
できんわな
自分が今何段目にいるのか?分かってる人は
1段上を目指して着実に習得してゆくことが
できるけど、分かってない人は、平気で
10段上のことを質問してしまう。で、周りの
人から見ると「へ?あんた全然わかってないじゃんか?」
となるんだな。で質問すればする程荒れるんだな。
>>577 のような自分への課題のようなことを、自ら
考えて自ら乗り越えられない人はプログラミングのセンス
ないと思うな。
0579nobodyさん
2006/09/11(月) 16:39:59ID:???0580nobodyさん
2006/09/11(月) 17:00:09ID:???いってらっさい
http://pc8.2ch.net/test/read.cgi/php/1150088761/
0581nobodyさん
2006/09/11(月) 17:43:29ID:2fSvB3gx取り出したときの表記がおかしくなってしまいます。
この場合絵文字はどんな形式で送られているのでしょうか?
?xXXXX;の形で送られているのですか?
0583nobodyさん
2006/09/11(月) 18:32:10ID:???0584nobodyさん
2006/09/11(月) 19:06:19ID:???0586nobodyさん
2006/09/11(月) 19:18:33ID:???www.uploda.org/uporg511835.gif
0590nobodyさん
2006/09/11(月) 19:55:23ID:2fSvB3gxありがとうです^^
http://www.sound-uz.jp/php/tips/mobile.html
こちらを参考にしたらできました
でも意味が良く分かりません
0591nobodyさん
2006/09/11(月) 20:15:27ID:xn87RO2Cその他のソフトのバージョンは、こんな感じです。
Cacti0.8.6h, RRDtool1.2.15, Net-SNMP5.3.1, MySQL5.0.24
動作はしているのですが、グラフを見ようとすると、ブラウザが
「ダウンロードしています・・・」の状態のままで、一向に画像が表示されません。
"中止"ボタンを押すと、画像が表示されます。
原因は恐らくContent-Lengthヘッダが付いてないからだと思ってるのですが、
どうやって付くように出来るかが分かりません。
画像(PNG形式)は、ファイルとして保存されているわけではないし、どうやって
PHPのコードで書いてやれば良いか、もしくは他の方法があるのか・・・。
御助けを・・・。スレ違いだったら誘導お願いします。
0592nobodyさん
2006/09/11(月) 20:22:53ID:72m7Skn3を見たんですが、ここの通りサニタイジングは出力時のほうがいいんですか?
みんな出力時にやってますか?
0595nobodyさん
2006/09/11(月) 21:13:59ID:???受け取ったらすぐにサニタイジングしないと不安だったんですが、
出力時にサニタイジングするのが当然なんですね。ありがとうございます。
0596nobodyさん
2006/09/11(月) 21:21:41ID:???応用効かなくね?
特に難解なわけでもないし、理解したほうが。
そうすれば、出力時にする意味もわかるし
0598nobodyさん
2006/09/11(月) 21:38:38ID:???0599nobodyさん
2006/09/11(月) 21:44:24ID:???<![CDATA[
]]>
で囲むんでない?
0600nobodyさん
2006/09/11(月) 21:45:28ID:???fsockopenでコピー元のホストをオープンした後、
copyでローカルへファイルをコピーした直後に
ローカルへコピーしたファイルが消えてしまいます。
この時copyの返り値は1なのですが、その直後に
filesizeでそのファイルサイズを取得してみようとしても
no such fileというエラーが出てしまいます。
どうすれば回避できるんでしょうか?
phpのバージョンは4.4.3でコピー元のファイルは
http://pc8.2ch.net/avi/dat/1157385546.dat
です。
0601600
2006/09/11(月) 21:54:17ID:iGRurTQFOS: Windows XP
webサーバー:04WebServer1.84
PHP: PHP 4.4.3
です。
0602nobodyさん
2006/09/11(月) 22:01:54ID:???copyじゃなくてファイルに書き込んだほうがいいんじゃないの??
というかfsockオープンより楽な方法もあるような、制限のある環境なのかな。
0603600
2006/09/11(月) 22:16:06ID:iGRurTQF普通にテキスト読み込みでオープンして
ローカルに書き出すってことでしょうか?
以前は消えなくて普通にファイルサイズが取得できたんですが
いつの間にかno such file or directory(たしかこんなスペルだったと思う)という
エラーが表示されていました。
今でも他のファイルとかもこんな現象は発生しませんでした。
http://pc8.2ch.net/php/dat/1157284868.dat
これも普通にコピーできてます。
コピーするファイルの中身に問題があるのでしょうか…。
0604nobodyさん
2006/09/11(月) 22:21:26ID:???参考:
resource fsockopen ( string target [, int port [, int &errno [, string &errstr [, float timeout]]]] )
int copy ( string source, string dest )
0605nobodyさん
2006/09/11(月) 22:25:48ID:???0606nobodyさん
2006/09/11(月) 22:45:14ID:???土下座までしたオレは無視ですか?
0607nobodyさん
2006/09/11(月) 23:17:49ID:???0608600
2006/09/11(月) 23:19:44ID:???コピー元の移動は無いと思います。
直接アクセスすれば見れますし・・・。
一応、普通のテキストリードはできるので、
とりあえずこれで回避したいと思います。
お手数お掛けしてすみませんでした。
ありがとうございました。
0609nobodyさん
2006/09/11(月) 23:54:05ID:???ASP(VBScript)でのHTMLでの表示がうまくいきません。
『VBScriptを語ろう』のスレにも投稿したのですが、何卒お助け願います。。。
0611nobodyさん
2006/09/12(火) 00:22:29ID:???>>1を読んでない事も問題だが
マルチはよろしくない、分をわきまえろ。
ちゃんと「Web製作:VBscriptについて語りましょう
」にも謝って、
改めて詳細な情報を添えて(>>609では情報不足)依頼するか諦めるか選べ
0612nobodyさん
2006/09/12(火) 00:36:34ID:???ttp://www.synapse.ne.jp/~iichiki/index5.htm
0616nobodyさん
2006/09/12(火) 01:12:43ID:???としたら、
$hoge[var]==1;を実行するような関数を作りたいんだけどどうすればいいでしょうか?
hoge($abc);
なら
$hoge[abc]==1;
です。
0618nobodyさん
2006/09/12(火) 01:38:00ID:???>>1嫁
呼び出し元の変数の名前を、呼び出された側は知る事ができない。よって無理。
まぁ、何がやりたいのかよくわからん。
$varに"var"とか"abc"格納してhoge呼び出せばいいじゃないか。
0620nobodyさん
2006/09/12(火) 01:47:07ID:???悪いこた言わないから
hoge("abc");
function hoge($name) {
if($hoge[$name] == 1)
}
にしときなさい。
■ このスレッドは過去ログ倉庫に格納されています