【PHP】くだらねぇ質問はここに書き込みやがれpart4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/13 16:08:32ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
0644nobodyさん
2005/04/15(金) 21:26:43ID:Gel4URAu0645nobodyさん
2005/04/15(金) 21:30:03ID:PCiCWiW9うそつき「」
0646nobodyさん
2005/04/15(金) 21:40:47ID:???ereg_replace("\\\\","",$str) か ereg_replace("[\]","",$str) でできる。
が、>>638のいうようにわざわざ正規表現を使う必要は無い。
pattern部分を " にしようが ' にしようが 4個必要なのだけど、性器表現のエロい人がいたら解説お願い。
オイラの解釈(つーか こじつけだな)だとこんな感じ。
\\の場合は、REG_EESCAPEが出るので 最後に\があるのがまずい。
なにかつけなきゃいけないんだが、パターンの一部に組み込まれる文字だとまずい。
regexの解説によると、\は4種類の意味を持ち(クォート(打ち消し)もその1つ)
それの中で \ が無視されるケースがある。
それに当てはまるものとして \\ があって、最終的に \\\\ になるんじゃないかな、と。
0647nobodyさん
2005/04/15(金) 21:44:12ID:???0648nobodyさん
2005/04/15(金) 21:45:24ID:???オマイ天才だな
0649642
2005/04/15(金) 21:56:52ID:???このHTMLが100ページ以上あって、文字コードとMETA変更したくなくて・・・。
>>644
nameタグを次の内容確認ページでユーザに見せる必要があってやむを得ず日本語にしてます。
100ページのinputの構成がばらばらなんですが、一つのphpで動かそうとしてますもんで。
汎用的に使えるフォームメールみたいなサンプルどこかにないですかね?
0650nobodyさん
2005/04/15(金) 22:07:45ID:PCiCWiW9<form method="post">
<input name="moji">
<input type="submit">
</form>
<?
if(isset($_POST['moji'])){
$str=$_POST['moji'];
//$text = ereg_replace ("\\", "",$str);
ereg_replace("\\\\","",$str);
print $str;
}
やっぱ¥が消えない
0651nobodyさん
2005/04/15(金) 22:08:10ID:???処理の流れとして、登録→確認→完了
と、一般的な流れで処理するプログラムなのですが
「確認」画面の際に、前のページに戻ると入力しておいた
内容が無くなっています。(テキストエリアなどが空欄になっている)
これってやはりcookieの問題なのでしょうか?
また、この問題を解決する方法ってありますか?
0652nobodyさん
2005/04/15(金) 22:34:41ID:???>このHTMLが100ページ以上あって、文字コードとMETA変更したくなくて・・・。
んなもん、その辺に落ちてるフリーウェアで100だろうが1000だろうが5分で終わるだろう。
「文字コードとMETA変更したくない」理由が「100ページ以上あってめんどくさい」ってなら
その他に理由があるのなら知らんが。
0653652
2005/04/15(金) 22:37:58ID:???5分は言い過ぎた。
条件式の入力含めても1分以内だな。
0654nobodyさん
2005/04/15(金) 23:51:23ID:???array('Opera,'IE','NN','Mozilla') と、
Operaを配列の[0]とする方法はありませんでしょうか。
0655nobodyさん
2005/04/16(土) 00:12:36ID:???$hoge = array('IE','NN','Opera','FF','Mozilla');
unset($hoge);
$hoge = array('Opera,'IE','NN','Mozilla');
どうしたいのかさっぱり分からん。
0656nobodyさん
2005/04/16(土) 00:28:45ID:???0657nobodyさん
2005/04/16(土) 00:42:26ID:???説明不足ですみません。
array(
[0] => IE
[1] => NN
[2] => Opera
[3] => FF
[4] => Mozilla
)
という配列から、[2]を削除して、新たに[0]に入れなおす、ということをやりたいのです。
array(
[0] => Opera
[1] => IE
[2] => NN
[3] => FF
[4] => Mozilla
)
となってくれれば成功なのですが・・・。
説明不足ですみません。。。
0658652
2005/04/16(土) 01:23:58ID:???お前は俺に喧嘩売ってんのか?
ttp://www.vector.co.jp/vpack/filearea/win/util/text/conv/code/
ttp://www.vector.co.jp/vpack/filearea/win/util/text/conv/
0659nobodyさん
2005/04/16(土) 01:28:09ID:???0660nobodyさん
2005/04/16(土) 03:58:58ID:???それとも全体のデザイン考えてから、ロジック組み立てます?
私の場合、デザイン考えて、考えて、考えて...etc
途中で嫌になってロジック組み立てだして、あああれも必要、これも必要、やっぱりあれも...etc
それで機能不足&イメージと違うものが出来上がります。|ω・`) イツモコウナンダヨネ...
0661nobodyさん
2005/04/16(土) 05:11:58ID:???デザインからひたすらあーでもないこーでもないってもう紙にペンで書いたりもして
悩みに悩んでからロジック組んで見て各ブラウザで動作チェックしますね。
おかげで私のパソコンにはIE NS Opera Mozilla
など5種類 入っています。1種類は秘密 w
0662nobodyさん
2005/04/16(土) 05:26:39ID:???新しいサイトを作ろうとデザイン考えてはや2ヶ月・・・
機能的なことは、とりあえず作ってからphpで組み込んでいく感じかな。
0663nobodyさん
2005/04/16(土) 05:42:08ID:???私は結構ヘタレプログラマなので、単純ミスとか多いんです。|ω・`) ハズカシイ...
でもって最近はヘタレロジック集を作ってライブラリ化しました。
ちょっとは楽になったのですが...今度はちょっとずつ機能を変えていくとライブラリが巨大化しました。
毎日何かあーしたい、こーしたいってブツブツ言いながらロジック組んでばかりです。
お陰で自分のサイトは半年放置状態です。
ああ、はじめはアップローダ作って動いたときの感動が懐かしい...
0664nobodyさん
2005/04/16(土) 06:56:17ID:???同じような関数がいっぱいでてきて戸惑っています。
>>>EOFと>>>__EOD__が同じだったり
echoとprintとprintfが同じだったり・・・
PHP初心者向けのサイトにも
1ページ前まではprint使ってたのに、次のページではechoになってたり、
同じだからいいんでしょうけど、統一性がなくて戸惑っています。
いろいろな言語から派生しているようなので仕方ないでしょうが、
みなさんは、気にしないで書いてるのでしょうか?
0665nobodyさん
2005/04/16(土) 06:58:56ID:???echo mb_convert_encoding($out, "SJIS", "EUC-JP");
SJIS書出しすると "〜"この文字が"~"こーなる
>>632
マッピングってどうやって変更するの
0666nobodyさん
2005/04/16(土) 07:47:29ID:???それは、お前さんがその関数に関して理解が少ないのと、
勉強始めたばかりで色々な状況に遭遇していないだけ。
>echoとprintとprintfが同じだったり・・・
これだって、それぞれに出来る事と出来ない事がある。
勿論、同じような事はできるが、作業が簡単になるとか、
色々な状況がある。
>いろいろな言語から派生しているようなので仕方ないでしょうが、
>みなさんは、気にしないで書いてるのでしょうか?
上記のように、出来る事と出来ない事があるので、
結果的には”気にして”書いている。
0669nobodyさん
2005/04/16(土) 09:18:19ID:???各ページで httpヘッダ(PragmaやCache-controlあたり)をチェック。
例えば、フォームのページでセッションを使ってたりすると、
これらにno-cacheが設定されて、ブラウザの戻るボタンで戻るとフォームを鯖から再読込してしまう。
この場合はsession.cache_(expire|limiter)を設定して回避できる。
とりあえず現状の把握からだな。
ブラウザの戻るボタンを使わせないように、ページ内に入力データをhiddenで仕込んだボタンを置いて、
フォームの再読込時に初期値として使う、つー気配りもあるとさらによいかと。
>>665
オイラの環境(4.3.5@win)だと 〜 になる。4.3あたりでmb_*が大幅に変更になったんじゃなかったっけ。
PHPは自前の変換テーブルを使っているので、それを書き換えてコンパイルしてサーバにインストールして...
鯖を弄れない場合は jcode.phpを使う つー逃げ道もあるかと。
0670nobodyさん
2005/04/16(土) 09:18:56ID:ESrHxwe0どう違うのでしょうか。
0671nobodyさん
2005/04/16(土) 09:35:57ID:???いろいろ制限があるよ。マニュアルにもその記載がある。
それで足りない場合は、ソースを見れ。ext/standard/basic_functions.c
0672nobodyさん
2005/04/16(土) 13:02:14ID:???その後、session_destroy して、Cookie に残ってる session 名と ID を
消したいんだけど…マニュアルに書いてある通り、
setcookie("セッション名", "", time() - 3600);
ってしても、session cookie が消えません。何か気をつける所ってありますか?
0673nobodyさん
2005/04/16(土) 13:53:17ID:2f7MF8Cm>>\が勝手について困ってるのなら
>>$str=stripslashes($_POST['moji']);
>>650
<?
$s="圭一";
//$str=stripslashes($s);
print print $s;
?>
できない!
0674nobodyさん
2005/04/16(土) 14:15:03ID:???>>673は何がしたくてそんなコードを書いているのか分からん。例としては不適切だな。
0675593
2005/04/16(土) 15:59:39ID:UCDVjpu7まじで探してるんですけど誰か知らないですか・・・。
0677nobodyさん
2005/04/17(日) 00:56:39ID:LKi8AXzU2ちゃんねるは連投を防ぐために、30秒経たないと投稿できないようになってますが、
これはどこでカウントされているのでしょうか。
クッキーかと思っていたのですが、ダイアログを表示して詳細を見ても、
それらしい書き込みはないし、書き込みをブロックしてもしっかりカウントされてます。
phpで同じ仕組みを作りたいと思ったのでここに書き込みました、
よろしくお願いします。
0678nobodyさん
2005/04/17(日) 01:26:39ID:???0679nobodyさん
2005/04/17(日) 01:37:27ID:???ttp://www.google.co.jp/search?hl=ja&q=%E9%80%A3%E7%B6%9A%E6%8A%95%E7%A8%BF%E3%81%AE%E9%98%B2%E6%AD%A2+PHP&lr=
0680nobodyさん
2005/04/17(日) 01:38:50ID:LKi8AXzUレスありがとうございます。IPですか、なるほど。
0681nobodyさん
2005/04/17(日) 01:39:35ID:???ユーザーが文字列を入力すると、その文字列を記述したページを日付入りURLにて、自動生成したいです。
簡単に言うと、 Hello World とユーザが入力したら、 Hello World と表示されるHTMLページ
http://ほげほげ.com/200504/0001.html を生成したいんです。
日付入りURLにて、自動生成するにはどうすればいいでしょうか?
0682nobodyさん
2005/04/17(日) 01:39:43ID:???0683nobodyさん
2005/04/17(日) 01:53:44ID:XcOUU5pl日本を抗日中国人から救う気概のあるプログラマさん
以下にて作戦会議をしていますのでお力を貸してください!!!
http://cgi36.plala.or.jp/bargiko/bargiko.cgi?roomID=1113648718774
よろしくお願いします!!
0684nobodyさん
2005/04/17(日) 02:03:30ID:???普通に書けばいいんじゃないの?
ユーザがHelloWorldと入力し、Submitする。
↓
現在の日付を取得し、その日付のディレクトリが存在するかを確認し、
存在しなければ作成する。
↓
HelloWorldと表示されるHTMLファイルを生成する。
0686nobodyさん
2005/04/17(日) 05:56:38ID:???例えばnameに「nanasi」という名前が入っていたとして
次の投稿でも同じnameにnanasiを入れたとします。
通常の表示なら
1:nanasi(名前)
2:nanasi(名前)
と重複表示すると思うのですが、重複文字列の場合は
表示させないようにします。(ID1だけを表示)
自分で考えてIFを使ってif($name=="")のように判定するというのはわかるのですが、
""の中をどのように設定すれば重複登録を表示させなくするか
わかりません。
申し訳ありませんが、何かアドバイスいただければと思います。
0688nobodyさん
2005/04/17(日) 08:01:22ID:cwjmobtF昔の方はソースが余りにも汚いので全部統一することにしました。
そこで、タイトルと本文を入力したら、指定したHTMLを吐き出すような
スクリプトは書けないでしょうか?
0690nobodyさん
2005/04/17(日) 09:05:16ID:cwjmobtF作ってみました。
>>689
ありがとうございます。
早速行き詰ったのですが、これだと出力がphpになってしまいます。
htmlで出力させたいんです。
ご教授よろしくお願いします。
0691nobodyさん
2005/04/17(日) 10:32:42ID:???ファイルに書き込む関数を使って、htmlファイルを作成する。
$title = 'タイトル'; $content = '内容';
$fp = fopen("target_filename.html","w");
fwrite($fp,$title.":".$content);
fclose($fp);
0692nobodyさん
2005/04/17(日) 11:04:12ID:???index.html内
<form action="form.php" method=post>
言葉を入力して下さい
<br><input type="text" name="kotoba">
<br><input type="submit" name="submit" value="言葉を登録!">
</form>
form.php内
<p>
<?php print $kotoba; ?>を登録しました。貴方専用の言葉を記載したURLは以下になります
<br>
http://ほげほげ.com/2005/0417-000000001.html
</p>
//日付表示のコード
<?php
$today = getdate();
print("$today[year]$today[mon]$today[mday]<br>\n");
?>
ここまでしかわからず。日付取得からディレクトリ作成・同じ日に投稿されたら1・2・3とカウントした上でhtmlを生成
そいで生成したURLを表示
がわかりませぬ。。。
なんかそれっぽい解説サイトありませんか? Yahoo!カテゴリ登録サイトを見てもなんかイマイチ。
0693nobodyさん
2005/04/17(日) 11:08:54ID:???出来ました。
それで日付をファイル名にぶち込もうと思い、
フォームを使ったのですが
"target_filename.html"の部分を$dateに置き換えるとhtmlファイルになってくれません。
試行錯誤してるんですが上手くいかず…。
0694nobodyさん
2005/04/17(日) 11:26:18ID:???0695nobodyさん
2005/04/17(日) 11:41:25ID:???何に困ってるのか分からん。
どういう関数を使えばいいのか分からないのなら、
存在(重複)チェック is_dir is_file(or file_exists)
作成 mkdir fopen
あたりを使えばできるんじゃないかなぁ。
解説サイトが必要になるほど複雑なロジックは使わなくていいはずだが。。
>>693
$dateつーのがどういう文字列か分からんが、htmlファイルにしたいならそういうファイル名にしましょう。
0699nobodyさん
2005/04/17(日) 12:42:43ID:???だから、プログラミングをするための思考に向いていないって。
>>691が示したスクリプトの各部が何をしているのかを考えろ。
$outfilename = 'target_filename.html';
$title = 'タイトル'; $content = '内容';
$fp = fopen($outfilename,"w");
fwrite($fp,$title.":".$content);
fclose($fp);
って、やれば判る?
日付を使った文字列の作り方はマニュアルを嫁。
0700nobodyさん
2005/04/17(日) 14:15:38ID:???というか、他人のスクリプトも解析した経験がないの?
まずは人のを見て、どういう構造でどういう動きになっているのか理解できるようになった方が良いと思うよ。
このコードがどんな役割してるのか分からんって場合は、このスレで聞けば良いんだし。
参考にするスクリプトも選んだ方が良いけど。
もしくは素直に既存のスクリプト使っておいた方が、自分の為でもサーバーの為でもあるんじゃ。
0701nobodyさん
2005/04/17(日) 15:01:51ID:???何とか出来ました(;´Д`)
ありがとうございます。
>>700
うい、勉強し直して来ます。
その時はまたお世話になると思いますが、どうぞよろしくお願いします(/д`)
0702nobodyさん
2005/04/17(日) 16:49:27ID:???全ファイル数と全ファイルサイズを取得する方法はないでしょうか?
そういった関数又は方法があればご教授願います。
0703nobodyさん
2005/04/17(日) 16:58:02ID:EGBwihx+0704nobodyさん
2005/04/17(日) 17:12:01ID:???ttp://www.php.net/manual/ja/
0705702
2005/04/17(日) 18:55:55ID:???サンプルを参考にしてファイル数を取得するスクリプトを書いてみました。
<?php
$dir = "scandirectory";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
print_r($files);
rsort($files);
/* print_r($files); */
for ( $i=0; $i<sizeof($files); $i++){
/* echo $files[$i]; */
echo $i;
}
?>
このスクリプトでは$iにファイル番号が次々と格納されていきます。
これでは使い物にならないので$iの最大値を取得したいのですが
$iの最大値を取得するにはどうすればいいでしょうか?ご教授願います。
0707702
2005/04/17(日) 19:27:45ID:???704さん706さんありがとうございました。
完成品
<?php
$dir = "scandir";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
for ( $i=0; $i<sizeof($files); $i++){
$i;
}
echo $i - 2;
?>
0708nobodyさん
2005/04/17(日) 19:44:29ID:???0709nobodyさん
2005/04/17(日) 19:48:24ID:???再帰処理するのが妥当なんだろうねぇ。
0710686
2005/04/17(日) 21:15:35ID:???だいぶレスが空いてしまって申し訳ないのですが
「全てのnameと比較」というのは、登録してあるDBなり保存ファイル
なりを、一端読み込んで
if($name=="$name"){
表示させない文
}else{
表示させる文
}
という風にするのでしょうか?
0711nobodyさん
2005/04/17(日) 22:31:18ID:???if文の中で比較するのは、
・今の処理対象のname - 例えば $new_name
と
・読み込んだ物をループして、その時の比較する順番になったname - 例えば $array_name[3], $old_name
との比較になる事は理解できていますか?
同じname項目ということで$nameという変数名にこだわってしまっている感じがします。
0712nobodyさん
2005/04/18(月) 02:45:14ID:???エディタは何を使うのがよろしいでしょうか?
TeraPadはPHPに対応してないので迷っています…
0713nobodyさん
2005/04/18(月) 03:46:32ID:???PHPに"対応した"エディタなんて無いんじゃ。
逆にコードハイライト程度であれば、エディタは好きな(慣れた)もの選べばよい。
但し文字コードがSJIS以外にEUC-JP/UTF-8には対応してるものを。
0714nobodyさん
2005/04/18(月) 05:25:09ID:???arg.php というファイルは引数によって、処理を変えたいと思っています。
arg.php の起動は(他の php ファイルからの)CLI か、
あるいは browser からの GET にしようと思っているんですが、
どうやって引数を受け取ったらいいでしょうか?
基本的には $_SERVER["argv"] で array が受け取れるんですけど、
試してみたら、あるサーバーでは値が設定されてませんでした。
例えば;
Apache/1.3.33 (Darwin) PHP/4.3.4 mod_perl (Mac OS X)
まぁ Mac で実際のサービスを動かす事は無いから無視してもいいんですけど、
一応、どこで動かすかわかんないし…
$_SERVER に設定される変数ってのをどの程度まで信用していいかどうか、教えて下さい。
0715nobodyさん
2005/04/18(月) 06:35:51ID:???コマンドラインの引数も入るけどね。
CLIでも$_SERVER["argv"]はつかえるはず。
でも2chよりマニュアルに明確に書いてある事だけを信用した方がいいよ。
そもそもどこで動かすかわからないスクリプトの動作を保証する必要があるの?
あるのなら損な仕事ですねっていうか動作条件を仕様ではっきりと指定すべき。
0716nobodyさん
2005/04/18(月) 16:12:17ID:???読んでいるだけでも結構目から鱗な事が多いので、全部読んでみたいのですが。
0720nobodyさん
2005/04/18(月) 17:10:59ID:???「公開されているか?」と尋ねるべきでしたね。
>>718>>719
ありがとうございます。にくちゃんねるで見付ける事ができました。
0721nobodyさん
2005/04/18(月) 20:37:23ID:???extract($_POST);
if($to == $ban) exit;
mail($to,〜以下省略);
$banで禁止アドレスに[email protected]を指定しています。
$toに"[email protected]"が代入されてもifで弾いてくれなくて困っているのですが、どうすればよいでしょうか?
0725nobodyさん
2005/04/18(月) 20:53:04ID:???$ban = "[email protected]";
$to = "[email protected]";
if($to == $ban) exit;
mail($to,〜以下省略);
でやってみたが
>$toに"[email protected]"が代入されてもifで弾いてくれなくて
普通に弾くがな。
0726686
2005/04/18(月) 21:05:40ID:wNKEVpEWありがとうございます。
>・読み込んだ物をループして、その時の比較する順番になった
>name - 例えば $array_name[3], $old_name
>との比較になる事は理解できていますか?
上記についてなのですが、全く理解出来ません・・。
arrayでname配列から取り出すというのはわかるのですが
old_nameというのはどこから出てきたのか?とか
そこから比較するのは正しいのか?というがいまいちどういう風に
組み込めばいいのかわからなくて。。
0727nobodyさん
2005/04/18(月) 21:12:26ID:???0729727
2005/04/18(月) 21:58:41ID:???$msg = str_replace("\", "¥", $msg);
とやってみたのですが、変換されていませんでした。
Googleで検索をかけてみましたが、それらしい情報見当たらなかったので、質問をさせて頂きました。
説明足らずで申し訳ありません。
0730nobodyさん
2005/04/18(月) 22:29:27ID:???スコープの概念なのですが、
$test = 1;
$test2 = 2;
if($test){
print "$test2 <- これは表示されて正常。\n";
$test3 = 3;
}
print "$test3 <- これが表示されるのが理解できない。\n";
上記$test3が表示されるのがどうも理解できません。
書き方がおかしいのでしょうか。
0731nobodyさん
2005/04/18(月) 22:35:13ID:???test3が表示されるということは、IFの中と外は同じスコープって事だ。
0732nobodyさん
2005/04/18(月) 23:05:09ID:???ttp://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.single
>>730
PHPでは perlでのブロック・スコープみたいなものは無いよ。
PHPでのスコープはどうなってるかってのはマニュアルを参照
ttp://www.php.net/manual/ja/language.variables.scope.php
0733nobodyさん
2005/04/18(月) 23:06:33ID:???0734712
2005/04/18(月) 23:36:10ID:???回答ありがとうございました。
それでは、PHPを編集するにあたってオススメのエディタはないでしょうか?
TeraPadは行末で折り返してくれないのが不便で、何かあれば乗り換えたいのですが…
0735nobodyさん
2005/04/19(火) 00:00:19ID:???行末で折り返してくれないエディタなど無い。
ウィンドウ幅で折り返し、という意味なら、
折り返される方がスクリプトエディタとしては失格。
0736nobodyさん
2005/04/19(火) 00:16:49ID:???折り返すように設定できる。ウィンドウサイズを変更するたびにやらないといけないが。
オプションのルーラーのところで論理行で行番号を表示するようにしておけば
行番号もずれることがない。
しかし俺も同等エディタに乗り換えたいという気持ちがある。
0737730
2005/04/19(火) 00:38:02ID:???そうですね。理解できてないですね。
スコープがかかってないのは試験でわかっていたのですが、
どうも気持ち悪くて質問してしまいました。
もう少し勉強してみます。
0738nobodyさん
2005/04/19(火) 01:07:51ID:???0739nobodyさん
2005/04/19(火) 01:29:22ID:???0740nobodyさん
2005/04/19(火) 08:43:47ID:???これ最強
0741nobodyさん
2005/04/19(火) 09:00:14ID:???0742nobodyさん
2005/04/19(火) 09:37:25ID:???0743nobodyさん
2005/04/19(火) 10:05:49ID:???子供が居るから、アカデミックパックで1万6千ですむ。
■ このスレッドは過去ログ倉庫に格納されています