【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
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:???0102nobodyさん
03/06/19 22:14ID:???まずform.htmlで
<form name="form1" method="post" action="confirm.php">
<p> 名前<br>
<input name="name" type="text" size="100">
</p>
のようなフォームを作り、confirm.phpで
<?php echo $_POST["name"] ?><br>
として表示しようとしているのですが、何故かなにも表示されません。
PHPが動いていることはphpinfo()で確認済みです。
どうもform.htmlからconfirm.phpに変数を渡せていないような気がします。
これはなにか設定の問題なのでしょうか?
ご教示ください。
0103nobodyさん
03/06/19 22:34ID:qf8t/Q9iParse error: parse error, unexpected '=' in /xxxxx/index.php on line 11
「=」はつかえないんでしょうか?
0104nobodyさん
03/06/19 22:34ID:???0105nobodyさん
03/06/19 22:38ID:???http://jp.php.net/manual/ja/function.preg-match.php
0106nobodyさん
03/06/19 22:39ID:???0108nobodyさん
03/06/19 22:50ID:???0109nobodyさん
03/06/19 23:00ID:???0110nobodyさん
03/06/19 23:23ID:???fopenではダメなのですかい?
0113nobodyさん
03/06/19 23:39ID:???ttp://www.php.net/manual/ja/function.fopen.php
0114nobodyさん
03/06/20 00:25ID:???allow_url_fopen
http://www.php.net/manual/ja/features.remote-files.php
0115nobodyさん
03/06/20 14:27ID:LThxuIrX次のページにその並び順のまま渡すには、
どんな方法が考えられますか?
ファイルに書き出すしかないでしょうか…
0118nobodyさん
03/06/21 00:51ID:???>>116-117の補足
shuffle($arr);
$str = rawurlencode(serialize($arr));
GETのとき
echo "<a href=\script.php?shuffled="{$str}\">xxx</a>";
POSTのとき
echo "<input type=\"hidden\" name=\"suffled\" value=\"{$str\}" />";
SESSIONのとき
書くのめんどくさい。rawurlencodeとかserializeとか不要。
0119nobodyさん
03/06/21 11:11ID:k+R30mgd調べてみると、multibyteってのを入れると、日本語化できる
みたいに書いてあるのですが、
逆を言えば、multibyteを入れないと日本語化できないんでしょうか?
またPerlってどうなんでしょうか?
0121nobodyさん
03/06/21 12:23ID:HF7plXmg先日、フリーのPHPチャットプログラムをダウンロードしてきました。
製作者様がおっしゃるにはそのチャットプログラムは、
改造は規約さえ守れば好きにしていいとの事です。
しかし、その公式ページ以外でそのPHPに関する質問は絶対にしないように
とのことで、しかしながら質問のお返事が戴けません。
そしてわたしは、今回初めてPHPを弄った筋金入りの素人です。
そのPHP内に特定の言語をはじくというソースがあるらしいのですが、
どこがなんなのかもうさっぱりです。さんざん自力でいじり、探しましたが、
なにせhtmlも満足にいじれないわたくしにとって腐海のようです。
解決策とかそれ以前に、わたしはどうすれば良いでしょうか。
製作者様のお答えを根気よく待つべきでしょうか。ここで質問しても
大丈夫なものなのでしょうか。自力でPHPを1からミッチリやり込むべきでしょうか。
0122あぼーん
NGNG0123nobodyさん
03/06/21 12:42ID:iHlRBHxT>そのPHP内に特定の言語をはじくというソースがあるらしいのですが、
意味がわからないな。。言語って英語とか?それともPerlはじくとか?(これも意味不明
できればその配布サイト教えてよ。簡単なら同じ機能ついたの作ってやるから。
0124119
03/06/21 12:50ID:k+R30mgd即レスありがとうございます。
じゃあmultibyteは何の役割をするんでしょうか?
0125nobodyさん
03/06/21 13:18ID:HF7plXmgいえ、まさかそこまでして頂く訳には参りません。
その、これを申すとそのプログラムが特定できてしまいそうなのですが、
いわゆる『人工無能』のついたチャットなんです。
『人工無能』とはAと言えばBと答える、というような法則を覚えさせて
疑似会話が出来るものだと聞きました。
その『人工無能』が、特定の言葉、主に著作権関係の言葉と思われるのですが、
それを全て覚えません。
その機能を外すには、どこのソースを消せばいいのか、という話なのです。
お解りになりましたら、どうぞご助言願います。
0127123
03/06/21 13:35ID:KU8WU14M>その機能を外すには、どこのソースを消せばいいのか、という話なのです。
>お解りになりましたら、どうぞご助言願います
PHPならPHPゆいちゃっとのゆいぼっとかなっとは思うけど…、
とりあえず配布サイトのURL出してくれないとわからないです
0128nobodyさん
03/06/21 13:40ID:???スクリプトによって違うので
何とも言えません。
アドバイスは
PHP入門(エーアイ出版)
をかってPHPを勉強しましょう
ということです。
0129123
03/06/21 13:40ID:KU8WU14M0130あぼーん
NGNG0131123
03/06/21 13:51ID:KU8WU14M原因突き止めてるからちょっと待ってね。
0132nobodyさん
03/06/21 13:55ID:???あやふやな質問にいくらレスしても疲れるだけだっつーの。
0133125
03/06/21 14:00ID:HF7plXmgはい…1から入門するのが一番だとは思っております。
ご推薦の書物を探して読んでみます。ありがとうございます。
>123さん
あああッバレてるッ(泣笑
すみません。結局サイトまで明かす事になってしまいました。
ここであのプログラムの事を質問しても、問題はないのでしょうか?
あのちなみに、『ビートルズ』の実験はどちらでなさったのでしょうか…
わたしが躍起になって調べた結果、経済界要人とスポーツ選手は覚えます。
歌手、有名人、米国のアニメキャラクター、映画のタイトルなんかは総崩れです。
ほんとうに、お手を煩らわせてご免なさい。
ありがとうございます。
0134125
03/06/21 14:03ID:HF7plXmg製作者様はわたくしの無理な質問に散々付き合って下さりました方です。
その製作者様が、わたくしの所為でそう言われては申し訳が立ちません。
どうか、その旨ご理解願えませんか。
0135123
03/06/21 14:04ID:KU8WU14Mなんて処理は何処にも無かったよ。多分原因は他に有ると思う。
0136123
03/06/21 14:08ID:KU8WU14M正式には、利用規約違反にはなっちゃうだろうなぁ…。
でもまぁレイさんも忙しいんだろうし、こっちでバグ見つけて報告するのはダメってわけじゃないから、
とりあえず何処が悪いのか探してみるよ。
ちなみにビートルズの実験は自分のサーバーでやってる
0137125
03/06/21 14:15ID:HF7plXmgそうですか!
あの、ズブの素人が素人脳で考えてしたことは、著作権に触れる言葉を
覚えさせた時にも、datファイル内には追加されているのです。
その上で$no_msgが発動していますから、全てのphp内を$no_msgで検索したんです。
$no_msgに関係するソースはどれを外しても動かなくなりますので、
じゃあそういう仕様なのだろうかと……すみませんほんとうに何にも知らなくて……
でも、著作権に関係する言葉だけを覚えないなんていう
器用なバグがあるのでしょうか。
やっぱり規約違反ですね……どうしよう………
0138123
03/06/21 14:16ID:KU8WU14M勝手に引用して悪いけど、
ボットが『ジョン・レノン』は覚えますが、『ビートルズ』『ポール・マッカートニー』を覚えません………(?。
禁止用語か何かでしょうか。
覚えない単語に共通しているもの、それは「ー」。
ためしにやってみるとわかるよ。
それから言うと、実際には「覚えている」
つまり、データファイルには書き込まれているが、それが呼び出されないのが原因らしい。
これ以上はまだわからない
0139123
03/06/21 14:18ID:KU8WU14Mレイさんがこのスレッドを見てらっしゃるかどうかは知らないけど、
原因見つけてバグ報告する事になっても、とりあえずこの事は黙っておくよ。
0140132
03/06/21 14:22ID:???やってて酷い目にあった経験があったものでw
原因は正規表現とか置換とか?
(スク読んでないけど)
マルチバイトのやつじゃなければ、mb_で試してみるとか。
0141125
03/06/21 14:31ID:???…………解りました………!
びっくりしました。そうだったんですね!なるほど!ほんとだ!
だからミッキーマウスもアーノルド・シュワルツネッガーも
オードリー・ヘプバーンもマリリン・モンローもダメだったんですね!
………アレ?だけどタモリもはじかれます。
すみません本当に。もしレイさんがここをご覧になった暁には、
レイさんの取られます処置に従おうと思います。
こんなに人目に触れる場所なので、遠からず彼もご覧になるかと思いますが……
いろいろ手を尽くして下さって、本当にありがとう。
>132さん
いえ、そもわたくしが全ての元凶ですので………
レイさんに黙ってここに書き込みするのに、後ろ暗いのです。
ほんとうにごめんなさい。
うわあ…だんだん自分がネットの契約違反者になっていく……
ネットの契約書を読むたびにそんな違反は普通に使っててしないだろうと
思っていましたが、初めて解りました。うう。
0143あぼーん
NGNG0144123
03/06/21 14:59ID:KU8WU14Mでも私が修正しようとすると、ややこしいやり方になっちゃう(しか知らない)から、
どう修正するかは、レイさんにおまかせするよ。
とりあえずサポ板に書き込みに逝って来まふ
0145125
03/06/21 15:04ID:???何から何までありがとうございました。
ご恩とご好意、忘れません。
これに懲りて、ちっとは自力でプログラムを弄れるようにお勉強いたします。
…とりあえずわたしも理系学生のはしっこですし(泣
123さん、132さん、本当にありがとうございました。
>142さん
心にズキンと響くイイお言葉ですねがんがれ。
ありがとうございます。がんがります。
0146nobodyさん
03/06/21 15:06ID:???0147123
03/06/21 15:40ID:???ほいじゃね。
0148nobodyさん
03/06/21 16:09ID:3yZp62xoというデータがPOSTされてくるので、既存のログファイルに、
POSTされたIDがあればエラー、なければデータ追加するには
どうすればいいでしょうか。
IDは固定長、dat1~3は可変長のデータです。
0149あぼーん
NGNG0150nobodyさん
03/06/21 16:39ID:???どこで悩んでるの?
0152nobodyさん
03/06/21 17:08ID:VyXOk/2cchomp($temp);
print "$tempが入力されました\n";
}
これだとABCDと入力したら ABCDが入力されました、と出て、
while ($temp = <STDIN>) {
$temp2 = chomp($temp);
print "$temp2が入力されました\n";
}
これだとなぜか、1が入力されました、としか出ないのはなぜですか?(´・ω・`)
0153あぼーん
NGNG0155nobodyさん
03/06/21 21:15ID:???Cでいう
do〜while
と同じような働きをする
ものってありますか?
0157あぼーん
NGNG0158あぼーん
NGNG0159nobodyさん
03/06/21 21:59ID:???0160nobodyさん
03/06/21 22:30ID:???0161あぼーん
NGNG0162nobodyさん
03/06/22 02:42ID:???0163nobodyさん
03/06/22 02:49ID:???0164影
03/06/22 07:56ID:???$hoge = file ( "test.log" );
echo "<table border=1>";
for ( $a = 0 ; $a < count($hoge) ; $a++ ){
echo "<tr>";
for ( $b = 0 ; $b < 5 ; $b++ ){
echo "<td>";
echo "$hoge[$a]";
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
と、やってみますたが、見事に失敗しますた(ウトゥ
0165nobodyさん
03/06/22 10:53ID:???どういう内容のtest.logに対して、どう表示したいの?
for( a ){
for( b ){
echo hoge( a );
}
}
になってるから、bの回数分(5回)だけ同じ$hoge[$a]を1行に出力するよ。
0166nobodyさん
03/06/22 13:16ID:v4BkkZfH456
789
10
みたいに表示したいので、半日悩んだ末↓でやったらとりあえず、上手くいったんだけど、
なんかしっくりこない。(echo"$k";が2回あるあたり)
もっとスマートなやり方ありますか?
$k=1;
for ($i=1;$i<=4;$i++) {
if ($k==10) {
echo"$k";
break;
}
for ($j=1;$j<=3;$j++) {
echo "$k";
$k++;
}?><br><?php echo ("\n");
}
■ このスレッドは過去ログ倉庫に格納されています