【PHP】初心者コーナー 3 Released【スローモード】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/06/11 06:24ID:???ファイル MySQL PostgreSQL 正規表現でも なんでもいってみ
でもな、アホな質問であっても詳しく質問しろよ。 ネタはおもしろく書けよ。
前スレ http://pc2.2ch.net/test/read.cgi/php/1048442813/l50
■PHPの普通の質問はあっちな、【PHP】質問スレッド Part8
http://pc2.2ch.net/test/read.cgi/php/1050249148/l50
■PHPへ移行したいPerl信者はあっちな、【待望】PerlユーザのためのPHP入門
http://pc2.2ch.net/test/read.cgi/php/1046326634/l50
■マニュアル嫁ってうるさいのがいるからちょっとは嫁な、
http://www.php.net/manual/ja/
■おまえ初心者なら入門本くらいかっとけな、PHP関連の書籍(但しPHP出版系お断り)
http://pc2.2ch.net/test/read.cgi/php/985315574/l50
■これはなズープスと読むらしいがあっちな、XOOPS
http://pc2.2ch.net/test/read.cgi/php/1031736248/l50
でもな、ここで書きたかったらここで書き。 あとは関連な、>>2
0002nobodyさん
03/06/11 06:24ID:???http://www.php.net/
■ 日本 PHP ユーザ会
http://www.php.gr.jp/
■ PHP マニュアル
http://www.php.net/manual/ja/
■ PEAR マニュアル
http://pear.php.net/manual/ja/
■【待望】PerlユーザのためのPHP入門
http://pc2.2ch.net/test/read.cgi/php/1046326634/l50
■PHP-users ML ヲチ
http://pc2.2ch.net/test/read.cgi/php/1031734100/l50
■【PHP】Smarty【Template】
http://pc2.2ch.net/test/read.cgi/php/1047225437/l50
■ PHP アップグレード報告スレッド
http://pc2.2ch.net/test/read.cgi/php/987259309/l50
■ PHP + MySQL
http://pc2.2ch.net/test/read.cgi/php/983250751/l50
■ PHP + PostgreSQL
http://pc2.2ch.net/test/read.cgi/php/983128806/l50
■ PHP 関連の書籍 (但し PHP 出版系お断り)
http://pc2.2ch.net/test/read.cgi/php/985315574/l50
■ perlスクリプト⇒phpスクリプト移植要望スレ
http://pc2.2ch.net/test/read.cgi/php/1035700861/l50
■ YomiサーチPHP化プロジェクト
http://pc2.2ch.net/test/read.cgi/php/1044371877/l50
■ せっかくだからPHPで掲示板作ってみませんか?
http://pc2.2ch.net/test/read.cgi/php/1035700861/l50
0003nobodyさん
03/06/11 06:27ID:kzWk23HI0004nobodyさん
03/06/11 06:31ID:???0005nobodyさん
03/06/11 06:32ID:???0006nobodyさん
03/06/11 06:32ID:???0007nobodyさん
03/06/11 13:44ID:lWApjllN0008nobodyさん
03/06/11 13:53ID:???PHPに関しては、このあたりのページをブックマークしておくと便利だよ。
http://www.php.net/manual/ja/ref.mysql.php
MySQLに関しては、
http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_toc.html
0009nobodyさん
03/06/11 13:55ID:???0010nobodyさん
03/06/11 22:32ID:???英語でもいいんで・・
どなたかタノム
0011nobodyさん
03/06/12 00:25ID:???確かに(見難さには)同意するが、それはPHPのマニュアルに
慣れすぎてる部分が多分にあるからかと。
あとmysql.comの方は結構使えるで。
0012nobodyさん
03/06/12 23:40ID:FX+eijnOttp://www.komonet.ne.jp/script/f_mail2/komomail.htm
ttp://www.komonet.ne.jp/script/f_mail2/komomail.phps(PHPソース)
上記のメールフォームを改造してチェックボックスを配置したいのですが、
HTML側のソースは、
<input type="checkbox" name="abc[]" value="hoge01">hoge01
<input type="checkbox" name="abc[]" value="hoge02">hoge02
<input type="checkbox" name="abc[]" value="hoge03">hoge03
<input type="checkbox" name="abc[]" value="hoge04">hoge04
を追加し、PHP側のソースに
for( $i=0; $i<count($abc); $i++ ) {
print $abc[$i] . "<br>\n";
}
print "<input type=\"hidden\" name=\"sabc\" value=\"$abc\">\n";
を追加しまして動作させたところ、
確認ページでは正常に表示されたのですが、ソースを見ると
<input type="hidden" name="sabc" value="Array">
とvalueの値がどのチェックボックスを選択しても「Array」になってしまい、
このまま送信してもメールにも「Array」と表示されてしまいました。
この「Array」の部分を「hoge01」「hoge01,hoge04」
のように表示させるにはどうすればよいのでしょうか。
宜しくお願いします。
0013nobodyさん
03/06/13 00:03ID:???value=\"$abc\"ここはArayだかだ$abc[$i]だとおもうど、
001412
03/06/13 00:20ID:???それも試してみたのですが、
value=""
となり、何も表示されなくなってしまいました…
書き忘れましたが、
function SendMessage()内には
globalに $sabc を、それと
$msg .= "選択肢 = $sabc\n";
を追加してあります
0015nobodyさん
03/06/13 00:37ID:???0016nobodyさん
03/06/13 00:42ID:???}
print "value=\"$abc\">\n";
こうなってるから。
001712
03/06/13 01:19ID:???ttp://www.komonet.ne.jp/script/f_mail2/komomail.phps
のソースに>>12と>>14を追記しただけなので全文の必要は無いかと
勝手に判断してしまいました…
>>16
それは…
for(){
}
内にprint "value=\"$abc\">\n"; を入れなければならない、
ということでしょうか?
0018nobodyさん
03/06/13 01:30ID:???必ずインデックスをつけて呼び出さなければならない。($abe[$i])
あなたのソースの一番下の行を$abc[$i]としても
$iのなかに何も値が入っていないので、
おかしなことになります。
ちゃんと$iのなかに数字を入れましょう
001916
03/06/13 01:52ID:???> この「Array」の部分を「hoge01」「hoge01,hoge04」
ってことなら、
value=\"".implode(",",$abc)."\" みたいにして、
配列を文字列に変換しなきゃいけない。
002012
03/06/13 02:19ID:???インデックスというのは
$abc[0] = hoge01
$abc[1] = hoge02
$abc[2] = hoge03
$abc[3] = hoge04
というやつですよね?
>>19
おぉ!出来ました!implode…配列要素を文字列により連結する、
というヤツですね?これで全ての問題が解消されました。
>>13さん、>>15さん、>>16=>>19さん、>>18さん、
どうも有難うございました。
PHP勉強し始めてまだ日が浅いのですがもっと努力します。
0021nobodyさん
03/06/13 02:21ID:???for($i=0;$i<count($abc);$i++){
print "<input type='checkbox' name='sabc' value='".$abc[$i]."'>".$abc[$i]."<br>\n";
}
こういうことなのか? PHP初心者なのか?
0022nobodyさん
03/06/13 02:22ID:???0023nobodyさん
03/06/14 00:13ID:oYY8Bt5l$hensu が a か b か c か d か
と言うのを書きたいんですけどうまく出来ません。
どうやったらいいんでしょうか。
ちなみに下記のように書きました。
$hensu = a;
if($hensu == (a||b||c||d)){
echo "あってます";
} else {
echo "違います";
}
0024nobodyさん
03/06/14 00:50ID:???$hoge = array("a","b","c","d");
if (in_array($hoge,$hensu)) {
echo "あってます";
} else {
echo "違います";
}
0025nobodyさん
03/06/14 01:14ID:???if ($hensu == 'a' || $hensu == 'b' || ...) {
yes;
} else {
no;
}
if (preg_match("/^[a-d]$/", $hensu)) {
yes;
} else {
no;
}
0027nobodyさん
03/06/14 08:37ID:p4ucyWfSsrand((double)microtime()*1000000);
$link=round(rand(1,5));
echo"<a href=\"http://www.*****.com/php?id=$link>リンク</a>\"";
これだとページをリロードしなければリンク先が変わりません
どうやったらいいんでしょうか?
0028nobodyさん
03/06/14 08:40ID:???echo"<a href=\"http://www.*****.com/php?id=$link\">リンク</a>";
0029あぼーん
NGNG0030nobodyさん
03/06/14 08:49ID:???ttp://www.*****.com/php に手を加えられるのなら、
その中でrand()すればいいのでは?
リンクのページ -> .com/php -> リンク先
0034nobodyさん
03/06/14 11:32ID:???2ページ目 : rand()でジャンプ先を決めてheader(Location:)で実際にジャンプ
1ページ目のリンク文字(<a>〜</a>の間の文字)は固定になるけど、どう?
0035nobodyさん
03/06/14 16:45ID:???最近のバージョンだと不要だよ。
0036nobodyさん
03/06/14 21:31ID:???>>12を真似て更にチェックを増やした(チェック項目じゃなくて種類)ら
途中まで表示されて止まっちゃった(応答無し)んですけど
0038nobodyさん
03/06/14 21:43ID:???0040nobodyさん
03/06/15 14:32ID:???解決しますた
HTMLの書き方がおかしかったみたいです
>>38
前からメール送信フォームのスクリプトを探してたんですけど
チェックボックス付きのって不思議なくらい少ないんですよ
ラジオボタン付きのは多いのに。
こんなCGI探してますスレで聞こうと思っていた時に
12でそういう話題が出てたんでこりゃ僥倖、というわけです
0041nobodyさん
03/06/16 19:26ID:???ファイルのn行目だけを消去というような処理は
どうすれば良いのでしょうか。
0042nobodyさん
03/06/16 21:57ID:???n行目だけ飛ばすとか?
0043nobodyさん
03/06/16 22:35ID:???edが入ってれば・・・
ed {ファイル名} <<EOT
行数d
wq
EOT
こんな感じのことをやらせると簡単?
# 複数行あるときは、行数は大きい順にdコマンドせいよ!
言ってることがわからないときは無視していいよ・・・
0045nobodyさん
03/06/16 23:50ID:ULUKCUBQ対象文字列が1つだけならば問題はないのですが、
複数ある場合に正しく認識しないのです。
0046nobodyさん
03/06/17 00:06ID:???オーソドックスに1行ごとファイルを読んで、対象行について処理。
消して詰めるんだったらスキップすれば良いし、
空行にしたいなら空行に入れ替えればよい。
処理用のテンポラリは配列を使ってメモリー上でやってもいいし、
PHPの一時作業ファイルの機能を使っても良い。別ファイルに吐くなら
直接そこに書き込んだ方が二度手間にはならないけど。
つかもちぃと、自分のやりたいことを具体的に書けるように汁。
0048nobodyさん
03/06/17 03:07ID:jU4Lgx5s$content=ereg_replace("(\[\[[^(\]\])]*\]\])","<a href=\"index.php?action=view&title=\\1\">\\1</a>",$content);
こうしてみたのですが、うまく動きません。
どうしたらよいのでしょう。
最初は
$content=ereg_replace("(\[\[.+\]\])","<a href=\"index.php?action=view&title=\\1\">\\1</a>",$content);
でした。
0049nobodyさん
03/06/17 04:08ID:???0050あぼーん
NGNG0051nobodyさん
03/06/17 11:30ID:???>うまく動きません。
これだけじゃね。
0052nobodyさん
03/06/17 15:44ID:???0053nobodyさん
03/06/17 17:12ID:???http://www.zend.co.jp/aboutphp/
0055nobodyさん
03/06/17 23:07ID:0jiXtgetディレクトリの中のファイル一個づつ足していかないとだめなんでしょうか。
0058nobodyさん
03/06/18 00:59ID:z2IuQj0n画像の大きさを判別できるのでしょうか?
200×300とか
調べたんですけど関数がないような
ということはC言語で関数を作る?
だれかわかりませんか?
0059nobodyさん
03/06/18 01:04ID:???0060nobodyさん
03/06/18 01:14ID:???http://www.php.net/manual/ja/function.getimagesize.php
マニュアルにまんまあるぞ。このRTFM!
0062nobodyさん
03/06/18 01:40ID:???0063nobodyさん
03/06/18 01:57ID:ozrEi3htありがとうございました
59>>
回線切って首を吊れ
0065nobodyさん
03/06/18 11:17ID:Y4tmU7Uq皆様におかれましては、いかがお過ごしでしょうか?
と、まぁ〜、んな事はどーでもいいので、質問させて下さい。
配列の中の要素の数を取得する事って出来ますか?
$hoge[0] = hoge0
$hoge[1] = hoge1
$hoge[2] = hoge2
って、配列があるとしたら、全部で3つじゃないですか?
その3ってのを取得したいんです。
0067あぼーん
NGNG0070nobodyさん
03/06/18 16:47ID:???JCode.php見つけたんですけどいまいち上手く動作しないのです。
0071nobodyさん
03/06/18 17:50ID:???007270
03/06/18 18:38ID:???要は、普通の掲示板などで行われている処理なのですが。
0074nobodyさん
03/06/18 22:09ID:???じゃあ、普通にjcode.phpつかえば。
jcode.phpだけど、
>JCode.php見つけたんですけどいまいち上手く動作しないのです。
こういう書き方するとバカかと思われるよ。
007565
03/06/19 03:14ID:2RPLMQCv別の質問なのですが、
title1,value1
title2,value2
title3,value3
というcsvファイルを、file()で読み込んで $lines に格納した後、
列ごとの要素を配列に入れたいのですが、
list($title,$value)=explode(",",$lines[$i]);
と、やったら上手くいきません。
マニュアル読むとlist()は、「配列と同様の形式で、複数の変数への代入を行います」
と、あるので上記だと $title や $value は変数で配列ではないという事ですよね?
列ごとの要素を配列として扱うには、どうすればよいでしょうか?
0077nobodyさん
03/06/19 03:59ID:???なんでeuc指定しないの?
007870
03/06/19 04:01ID:???ただ、ブラウザが送出する文字列は指定できないこともありますので、
変換前文字列を自動認識にしているんです。
すると、ときどき化けることがあるわけで。
0079nobodyさん
03/06/19 04:35ID:???これを上手い事、条件つけて変換するとか。
008070
03/06/19 04:52ID:???どういう条件をつけたらよいのでしょう。
0081nobodyさん
03/06/19 04:57ID:Xa9Oiy3tとりあえず
$lines = file('hoge.csv');
$title = array();
$value = array();
for ($i=0;$i<count($lines);$i++) {
list($title[$i],$value[$i])=explode(",",$lines[$i]);
}
かなあ?
$lines = array_map('SplitCSV', file('hoge.csv'));
function SplitCSV($line) {
$a = explode(',', $line);
return array('title'=>$a[0], 'value'=>$a[1], 'value2'=>$a[2]);
}
みたいに多次元配列に入れたほうがデータを使い回しやすいし、
ファイルを全部読み込む必要がないならfgetcsvを使うのが良いだろうし。
方法はいろいろありますyo。
>>78
jcode.phpsは最新版(1.34)ですよね?
いちおう http://www.spencernetwork.org/ を張っときます。
PHPがセーフモードでないなら、exec()でnkfを使うとか
mbstringのDSOを調達してdl('mbstring.so');するとか? (w
008270
03/06/19 05:17ID:???jcode.phpsは最新版です。
で、後の方法ですが、強引ですねえ。。。
文字化けの状況はここと一緒かと。ちょっと内容微妙だけど。
http://www.google.co.jp/search?q=cache:W9edWQoBLUMJ:www.geocities.co.jp/CollegeLife-Labo/9015/discussion/0301-0350/log00000305.html+%E5%8A%B9%E5%8D%A0&hl=ja&ie=UTF-8
なんか、根本的に間違っている気がしてきました。
0083nobodyさん
03/06/19 05:46ID:???>>82
すごく強引です。半分ネタのつもりで書きました。ごめん。
ところで、文字列は保存する直前(処理したあと)変換してませんか?
それならスクリプトの冒頭で
$str = serialize($_POST);
$str = JcodeConvert($str, 0, 1);
$_POST = unserialize($str);
って感じであらかじめ変換してやるといいかも。
個別に変換するんじゃなくて、一つの長い文字列として扱うことで
判定ミス軽減を狙ってます。うまくいくかわかんないけど。
とりあえず、そのリンク先が根本的に間違っているのは疑いの余地が無いですね。
0084nobodyさん
03/06/19 05:54ID:???上の$_POSTは$HTTP_POST_VARSもしくは$HTTP_GET_VARSと読み替えてくだされ。
0089nobodyさん
03/06/19 14:58ID:???しらんかたよ汗
0090nobodyさん
03/06/19 16:54ID:BuZyfKvG$key = 'key';
$line = 'abcd $key{key1} efgh $key{key2} ijkl';
以上のデータを使って$lineを
abc val2 efgh val2 ijkl
と成るように置換したいのですが、以下だとうまく動きません。
$line = preg_replace('/\$'.$key.'\{(.*?)\}/',$hash["\\1"],$line);
どうしたらうまく動かせるのでしょうか。教えてください。
ちなみにperlだと
$line =~ s/\$$key\{(.+?)\}/$hash{$1}/g;
0091あぼーん
NGNG0092nobodyさん
03/06/19 16:59ID:3FZVSEpwつか、それ以前に''(シングルクォート)じゃあ、変数が
展開されねーべさ。
0094nobodyさん
03/06/19 17:19ID:???''
009592
03/06/19 17:20ID:???「'」(しんぐるくぉ〜と)
と書き直してみるテスト。
0096nobodyさん
03/06/19 17:22ID:???$hash[$1] のかわりに md5($1)とか、オリジナルのハッシュ関数($1)とかでもいいかも。
009790
03/06/19 17:24ID:BuZyfKvGちょっとまぎわらしいコードを書いてしまってすいません。
$lineでしたら、展開されないように''にしています。
$line = 'abcd $CODE{1} efgh $CODE{2} ijkl';
$key = 'CODE';
$hash = array(1=>'111',2=>'222');
$line = preg_replace('/\$'.$key.'\{(.*?)\}/',$hash["\\1"],$line);
で$lineを
abcd 111 efgh 222 ijkl
にしたいのですがpreg_replaceの所で、つまずいています。
0098nobodyさん
03/06/19 17:44ID:???実用的なものとしては、“漢字コードはEUC”というのがある。
ttp://www.valhalla.gr.jp/coffin/essay/2001/august.html#12
>> 90
$line = preg_replace_callback('/\$'.$key.'\{(.*?)\}/', create_function('$a', 'return $GLOBALS["hash"][$a[1]];'), $line);
もっといい方法があるかも。
0099nobodyさん
03/06/19 18:05ID:j1VyygA0可能でしょうか?
0100あぼーん
NGNG0101nobodyさん
03/06/19 21:54ID:???■ このスレッドは過去ログ倉庫に格納されています