【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/
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千ですむ。
0744軟式PHP
2005/04/19(火) 10:49:06ID:???0746nobodyさん
2005/04/19(火) 11:45:15ID:???その辺はどうなんだろうな。
MSのアカデミックパックだと中学以上なんだよね。
それに、MSのサイトに対象学校が検索できる。
俺は、弟が高校の教師だから、弟に頼んで買ってもらってる。
0747nobodyさん
2005/04/19(火) 15:15:29ID:RLnorT+EPHP Startup: Unable to load dynamic library'./php_gd2.dll' - 指定されたモジュールが見つかりません。
PHP Startup: Unable to load dynamic library'./php_mdstring.dll' - 指定されたモジュールが見つかりません。
gdをインストールしなければいけないのですか?
PHP5をインストールしただけではだめなのですか?
本の通りにインストールしたのですが…。
0748nobodyさん
2005/04/19(火) 15:33:02ID:???ttp://www.php.net/manual/ja/install.windows.extensions.php
0749nobodyさん
NGNGPHP4.3.11
を使用しているのですが
Apacheを起動するとき何故か
Unknown():Unable to lpad dynamic library 'C:\php\extensions\php_curl.dll' - 指定されたモジュールが見つかりません。
というエラーが出ます
extensionsフォルダを調べてみてもちゃんとphp_curl.dllはありますし
extensionsフォルダまでのフォルダ構成もあってます
4.3.8から4.3.11にバージョンアップしてApacheを再起動した時は特にエラーは出なかったのですが…
どうやれば直るんでしょうか?
ちなみにphp.iniは4.3.8のものをそのまま使った場合と4.3.11のパッケージに入っているものを使った場合を試してみましたが
両方ともエラーが出ました
0750nobodyさん
2005/04/19(火) 16:50:29ID:???0751749
NGNG>>748を見てもわからなかったんですが…
extension_dirを設定してphp_curl.dllのセミコロンを削除するだけではダメなんでしょうか?
他のdllもいくつか読み込むようにしているんですがエラーは出てないのですが…
0752nobodyさん
2005/04/19(火) 19:15:02ID:???0754nobodyさん
2005/04/19(火) 22:41:32ID:wL85daoNような関数はないのでしょうか
0755nobodyさん
2005/04/19(火) 23:32:38ID:???わかりやすく作ったつもりでも、後から見直してみたら判りづらいし。
0758nobodyさん
2005/04/20(水) 00:26:14ID:YJUJgQqHttp://218.222.232.106/skin.txt
このスクリプトを実行しても<!-- date -->以外変換されないんですが
原因わかる方教えてください
0759nobodyさん
2005/04/20(水) 01:07:31ID:S/OGWVDAお互いの記事を自動的にリンクさせる、って感じの掲示板を作ろうと思っていて、
自然文を解析させなきゃいけないから茶筅とかで形態素解析かなとまず思いついたんですが、
レンサバだと茶筅等の導入が難しかったりでPHPだけで実現できないかと模索しています。
PHPで形態素解析とか使わずに似たようなことが出来る方法ないでしょうか?
0760nobodyさん
2005/04/20(水) 01:19:47ID:???したいことがよくわからんが、もうちょっと勉強しろ。
foreach使えばもっと楽だし、わざわざ配列に入れて1行ずつ比較せんでも、
ざくっとstr_replaceだけしてやりゃいいんじゃないか?
どこが間違ってるかは知らない・・・というか見る気がしない。
0761nobodyさん
2005/04/20(水) 02:56:32ID:???正規表現の「パターン」とはどんなもんか勉強すること。
$replaced='title';
$replaced='body';
$replaced='date';
と並べると、$replacedには'date'しか入らんよ。
&各行でstr_replaceの返り値がどうなってんのか確認汁。
0762nobodyさん
2005/04/20(水) 03:48:23ID:???0763nobodyさん
2005/04/20(水) 04:10:07ID:???意図が分からんが負荷高いとディスク逝かれるぞ。
動的のHTMLを生成しないならshellでindex作ってる方が良いぞ。
0764nobodyさん
2005/04/20(水) 07:22:50ID:HNz86lwJ適した関数があるぜよ。
0765nobodyさん
2005/04/20(水) 12:53:45ID:M6NXhxaMできればPHP5でバンドルされるSQLiteのバージョンも合わせて知りたいのですが。
よろしくお願いします。
0766nobodyさん
2005/04/20(水) 14:42:37ID:???ソースをダウンロードして、
$ cat php-x.x.x/ext/sqlite/libsqlite/VERSION
php4もpearかなにかでエクステンションをダウンロードして以下同文
0767nobodyさん
2005/04/20(水) 15:32:45ID:???追加されてますよね?
0768nobodyさん
2005/04/20(水) 15:52:31ID:???PHP5で追加されたのは、E_STRICT noticeだけですよ?
ttp://www.php.net/manual/ja/ref.errorfunc.php#errorfunc.constants
0770nobodyさん
2005/04/20(水) 16:19:05ID:???本にのってない…。
0771nobodyさん
2005/04/20(水) 16:29:16ID:???比較演算子
ttp://www.php.net/manual/ja/language.operators.comparison.php
それが載ってないってことはphp4が出る前の本なのかな、それとも入門版なのだろうか。。
いい機会なので他の部分にも目を通しておきましょう。
0772770
2005/04/20(水) 16:45:18ID:???ありがとうございます。
!=との違いは、
<?
$a = 10; //int型
$b = '10'; //char型
if($a != $b){
print '!=';
}elseif($a !== $b){
print '!==';
//これが出力される
}
?>
ということですね。
0773nobodyさん
2005/04/20(水) 16:50:25ID:???char型ではなくString型
0775nobodyさん
2005/04/20(水) 17:37:55ID:H4DxOPr0渡らないという現象が起こることってあるのでしょうか?
ユーザーの投稿フォームで入力したデータをメールで受信
するようにしてるのですが、ごくたまに空で受信されることが
あります。エラーチェックをしてるので空で渡るとエラー
が表示されのでこのような現象を解明できません。
誰かわかる人いないでしょうか?
0778nobodyさん
2005/04/20(水) 19:24:17ID:CALzzqinperl?
phpからexcelファイルに書き込むことはできないか・・・
0779734
2005/04/20(水) 20:23:33ID:???ありがとうございます。そうです、ウィンドウ幅で折り返しという意味でした。
TeraPadも設定でできるのですね。やってみます。
>>738〜744
ありがとうございます。とりあえずPHPエディタっていうのを使ってみますね。
■ このスレッドは過去ログ倉庫に格納されています