【PHP】質問スレッドpart16【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/04/07 01:06ID:HTcWOpWf上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ及び注意事項等は、 あふぉが居なけりゃ>>2-5
0044nobodyさん
04/04/07 16:51ID:???docchimo
docchi
dana
pgr
004726=33
04/04/07 16:59ID:???きっかけを作った様で申し訳ない
0048nobodyさん
04/04/07 17:04ID:???zutto ita kuseni yo-
zien gokurou!
ahyahyahyahya----
0050nobodyさん
04/04/07 17:35ID:???005125です。
04/04/07 17:45ID:oWoartygなんかアホ言ってたみたいで。。
出なおしてきます。。
005225
04/04/07 17:49ID:oWoartyg0053nobodyさん
04/04/07 18:13ID:???文体がどうのこうのって、お前ら高尚なバカだね
0054nobodyさん
04/04/07 18:18ID:???while( fscanf(fp,"%s<>%s",str1,str2) !=EOF )
ってのはどうすればいいですか?
while(!feof($fp){
$temp=chomp(fgets($fp));
list($str1,$str2) = explode("<>",$temp);
}
だと、行が「aa<>aa」でないときも読み込んでしまいますし・・・
while( fscanf($fp,"%s<>%s",$str1,$str2)){
でもうまくいきません。。。
ご教授お願いします
0055nobodyさん
04/04/07 18:21ID:???逃避だな。せいぜいがんばれやプログラムおたくたちよ。
臭いジーンズはいた能無し野郎どもが
0056nobodyさん
04/04/07 18:39ID:???^もしくは> + >もしくは^か<が0回以上の文字列、と解釈したんですけどそれで間違ってませんか?
てか間違ってますよね?
0059nobodyさん
04/04/07 19:08ID:???006156
04/04/07 19:43ID:???$com = eregi_replace("(^|>)(&gt;[^<]*)", "\\1<font color=\"#FFFFFF\">\\2</font>", $com);
1つめのパターングループは行頭または>ってのはわかりました。ありがとうございます。
2つめのパターングループの中が&gt;に変わることでの違いはありますか?
0062nobodyさん
04/04/07 19:48ID:???0063nobodyさん
04/04/07 19:52ID:???0064nobodyさん
04/04/07 20:28ID:???ネタ?
0066nobodyさん
04/04/07 22:52ID:???0067nobodyさん
04/04/07 23:52ID:???0068nobodyさん
04/04/08 01:07ID:???0069nobodyさん
04/04/08 02:05ID:dl+O+lnWA 1 32
B 2 33
C 1 28
といった配列がある場合
A(降順)→B(昇順)にソートして
C 1 28
A 1 32
B 2 33
にしたいのですが可能でしょうか?
0071nobodyさん
04/04/08 03:04ID:dl+O+lnW教えてください
ちなみに
B 2 33
C 1 28
A 1 32
の間違いです
0073nobodyさん
04/04/08 05:43ID:???連続する文字を一つにまとめるのって正規表現使わないと無理でしょうか?
ABBBBBA → ABA
みたいな感じで処理したいんですけど。
0075nobodyさん
04/04/08 11:31ID:???駄目なの?
あ、日本語交じりの場合は文字コードとかいろいろ
考えないと駄目か。
まあ、それでも何とかあるとは思うけど。
0077nobodyさん
04/04/08 13:09ID:???無理じゃないが、74, 75氏の方法と比べると
どちらが速いかおしえてけれ。
$src = 'aabbbcccddddeffghhhhaaaaa';
preg_match_all('/(\w)\1{0,}/', $src, $matches);
$dest = join($matches[1]);
var_dump($dest);
007977
04/04/08 13:37ID:???preg_replaceは、デフォルトで
s/src/dest/g
と同じ働きですか。てっきり、最初に見つかった
ものだけしか置換しないと思ってますた。
ありがと、勉強になった > 78
0080nobodyさん
04/04/08 14:44ID:???$str = 'gunnosuke';
for ($i=0; $i<strlen($str); $i++)
echo $str[$i];
とstringの各文字に[]でアクセスできるようなんだが、
これは演算子をオーバーライドしてインデクサを自動生成しているのか、
配列にコンバートしているのか、どうなってるんだい。
0081nobodyさん
04/04/08 15:02ID:???>配列にコンバート
は、していない。
char c, str[] = "2ch";
int i = 1;
c = *(str+i);
と同じ扱いで文字を取り出してる。
文法的には、"[","]"も過去の互換性で使えるが
配列と間違うので、"{","}"が推奨される。
と、Manualに書いてある。
0082nobodyさん
04/04/08 17:09ID:???文字列が可変長だしマルチバイトも保護されるからインデクサ作れるのかと思った。
String型だけの例外的な機能という感じかな。
弄り始めたばかりだけどPHPのマニュアルは今までで一番分かりやすい。邦訳も早いし。
# ちなみに最悪だったのはMacromediaの某変態言語、、
0083nobodyさん
04/04/08 19:13ID:3a2aIHWR0084nobodyさん
04/04/08 19:21ID:???MX2004でJavaScriptサポートして、さらにわけわかめ
俺の性にあってないんだろうなぁ・・・
0085nobodyさん
04/04/08 20:09ID:???解放するまでファイルポインタの変更を禁止するってことですよね?
0088nobodyさん
04/04/08 21:33ID:fQnxqVh8EUCエンコードのWebページから件名と本文を入力し
ボタンを押すとメールを送る処理をやっているのですが
メールのエンコードはISO-2022-JP mail関数にて
本文中に そ という文字を入力すると そ の後ろの1文字が消えてしまうのです。
本文のエンコードはmb_convert_encoding($mes,"JIS","auto");
としているのですが何が原因なのでしょうか・・?
Webで調べたのですがいまいちわかりませんのでよろしくお願いします。
0089nobodyさん
04/04/09 09:23ID:???問題の切り分けが必要だな。
$a="さしすてそたちつてと";
$jis=mb_convert_encoding($a,"JIS","auto");
mb_send_mail("[email protected]","test",$jis);//mail()でもいいけど。
見たいな簡単なコードで"そ"の後ろが消えるかどうか検証汁。
0090nobodyさん
04/04/09 15:19ID:letoosyEしかし、そんな感じ(mail)ですると結果は さしすせそちつてと と表示されてしまうのです。
、でいろいろといじくっていると
mb_convert_encoding($a,"SJIS","auto");
とJISのところをSJISに変えると正常に送れました^^ すみません。
がちょっと気になるところがありまして
この状態で受信したメールのソースを見てみると
本文の表示がそのまま日本語となっているのです。
普通ならiso-2022-jpのエンコード?で表示されてると思うのですが
Macとかでも文字化けしないで受け取れるのでしょうか・・
Mac環境があれば試せるのですがないもので^^;
PHPから質問がずれたならすみませんです。。
0091nobodyさん
04/04/09 15:33ID:???http://jp.php.net/manual/ja/function.mb-send-mail.php
0092nobodyさん
04/04/09 16:24ID:owjki1HePHP初心者です。どうすればよいか教えて下さい。お願いします。
0093nobodyさん
04/04/09 16:28ID:???メーラー(MUA)がShift-JISに対応していれば大丈夫だと思うが。
ヘッダもそれに合わせなけりゃならんだろうけど。
ところで、JISに変換した時点で抜けてしまうのか、
メールを送信した時点で抜けてしまうのか確認は?
0094nobodyさん
04/04/09 16:29ID:???0095nobodyさん
04/04/09 16:33ID:owjki1Heあっありがとうございます。
0096nobodyさん
04/04/09 16:35ID:???CGIとは
ttp://e-words.jp/w/CGI.html
#しっかしまぁ、"CGIとは"でググるとほとんどがCGI=サーバーサイドプログラムになってますな。
0097nobodyさん
04/04/09 16:42ID:???------------------------------------
{ボタン_a} {ボタン_b} {ボタン_c}
------------------------------------
<明細部 表示される数は可変です>
checkbox[] text[] {ボタン_d}
checkbox[] text[] {ボタン_d}
略
checkbox[] text[] {ボタン_d}
checkbox[] text[] {ボタン_d}
上記のような画面において,ボタン_a, _b, _c が押された時は checkbox に
チェックされた明細を処理したい.
ボタン_d が押された時は,同一行の text に記入されている内容を元に処理をしたい.
FORM の中に FORM を入れ子にできないので,上記は全て同一の Action で処
理しなければならないと思います.どの checkbox にチェックされているかを
調べる事はできたのですが,どの ボタン_d を押されたか,をどのように調べ
たらいいのかがわかりません.ボタン_d に表示させる Value の値はそれぞれ
で変える事はできません.どのような方法で行なえますでしょうか?
アドバイス頂けたら幸いです.よろしくお願いします.
010197
04/04/09 17:26ID:???ところで Javascript で,という話がありましたが,
ボタン -> Javascript 呼び出しで,Javascript に 任意のパラメータを渡し,
Javascript が受け取ったパラメータを POST して別のページを
呼ぶ事はできるのですが? この件でここに書き込むのは最後にしますので
アドバイス頂けるとうれしいです.
0102nobodyさん
04/04/09 17:32ID:???submit()とかで出来たんじゃなかったかな?
いずれにしろ板違い
Web製作板のJavaScript質問スレで訊いたほうがいい
010399
04/04/09 17:34ID:???なんか難しく考えてるようだが・・・
<form name=fm action=xxx.php>
<input type=hidden name=v1>
....
とかあったとして、
fm.v1.valueでパラメータ与えて、fm.submit()でフォーム飛ばすでいいんじゃにゃいの?
つかホント、スレ違い板違いだよな・・・
相手している俺も同罪か。すまん。
0105nobodyさん
04/04/09 22:11ID:k++yB20Lいつ正式リリースされますか?
今年中には無理ですかね。
0106nobodyさん
04/04/10 01:45ID:???0107nobodyさん
04/04/10 14:18ID:???print "hoge" . $foo . $bar;
echo "hoge" . $foo . $bar;
どれが理想か教えれ。
0108nobodyさん
04/04/10 14:20ID:???0109nobodyさん
04/04/10 14:24ID:5lA8cxSI0110nobodyさん
04/04/10 15:16ID:???言われて考えて理解した。
printf ("hoge%d%4d", $foo, $bar);
のように型が違うときに使うほうがいいんだな。
で、いちいちreturn値を参照する必要もなくechoがいいと。
0111nobodyさん
04/04/10 16:02ID:???0112nobodyさん
04/04/10 16:23ID:???011390
04/04/10 17:15ID:hLFtBAQr確認しましたところなんとソースの本文も
正常にでるものと同じでした。
そば とうってみたものですが $B$=$P(B と共に表示されています。
ヘッダーは
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
ってな感じなんですがどこが悪いのだろうか・・(;;)
0114nobodyさん
04/04/11 10:06ID:???改行コードとかどうするの。
echo 'hogehoge' . "\n";
こう?
0115nobodyさん
04/04/11 13:37ID:lCC6ooQt(´-`)
0116nobodyさん
04/04/11 14:05ID:???自分は変数混じるものはそうしてるけど、
己のスタイルと合わないなら
普通に echo "hogehoge\n"; で良いと思う。
(上の例の場合は流石に"で括る)
要は若干のスピードとパース処理のわかり易さだけだから、
自分が逆に判りにくくなるならやらない方が良い。
0117nobodyさん
04/04/11 14:09ID:???HTTP通すんだったら、自分でバイナリタイプの
hedaer出力して、後はデータ出力するだけ。
PHPのバージョンによってはバッファリングでの
処理が影響する場合もあるので気をつけること。
0118nobodyさん
04/04/11 14:45ID:???ありがとう。
Cの畑の人だから、こういった言語の定石とか知らないもので助かります。
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
例えばこういうのを出力したいとき、運用を考えると「EUC-JP」は定数として
切り出したいのでdefine関数でinclude用ファイルにHOGEHOGEしておいて・・・
皆さんならどうやって出力しますか?
echo '<meta http-equiv="Content-Type" content="text/html; charset='
. HOGEHOGE . '" />' . "\n";
こんなのでいいのかな。
0119nobodyさん
04/04/11 17:03ID:lCC6ooQtずっとgoogle等で調べてましたが、ピンとくる解説が無く
バイナリタイプのheaderの意味がいまいちわからないんです(´-`;)
uta.amcをバイナリエディタで開いたように画面に表示させるのは何を追加したら
良いでしょうか?
<?php
$filename = "uta.amc";
$fp = fopen($filename,"ab+");
$buf =fread($fp,filesize($filename));
print("$buf");
fclose($fp);
?>
今はnotpadで開いた時と同じのしかでません(´-`;)
0121nobodyさん
04/04/11 17:43ID:KEOuC9YI教えてください。
ソースは以下の通りです。
01┃<?
02┃$cmd=exec("date > date.txt");
03┃echo "$cmd";
04┃?>
0123121
04/04/11 18:07ID:KEOuC9YIdate.txt); echo "$cmd"; ?>
って表示されます。
PHPからLinuxコマンドを発行する事は不可能でしょうか?
0125nobodyさん
04/04/11 18:14ID:???>バイナリエディタで開いたように画面に表示
HTTPやクライアント側の処理の仕組みが判ってない
のかも知れないが、何を言ってるのかよくわからない。
ブラウザのHelperApplicationsに、MIME-type(Media-type)
とアプリケーション(バイナリエディタ)を関連付けてやって、
そのMIME-typeを、header関数でブラウザに通知すればOK。
MIME-typeは一般的なbinaryならば、application/octet-stream
とか、application/x-binary-editorを使えばよい。
0126121
04/04/11 20:51ID:KEOuC9YIその通りにやっているんですが、WEB上で実行すると実行されないようです。
[root #server publuc_html]php date.php
と実行すると、そのディレクトリにdate.txtが出来るのですが、webで
http://localhost/~user/date.php
を実行してもdate.txtは出来ませんでした。
0127nobodyさん
04/04/11 21:12ID:???書きにくくてたまらん。
このド素人用糞言語が。
0130nobodyさん
04/04/11 23:27ID:6nBAadXKweb製作板かもしれませんが、一応、ここが専門っぽいので・・・
<a href="http://feena.jp:81/typemoon/each.php?author=%CF%C2%C0%F4%CB%E3%BD%BD">
上のサイトの、検索結果に対してリンク貼りを試みたのですが、
結果は繋がりませんでした。
エスケープ方法が間違っている、との指摘を受けたのですが、さっぱりわかりません。
検索かけても載ってませんでした・・・
上のサイト検索結果に正しくリンクを貼るには如何すれば良いのでしょうか?
どなたか、アドバイスをよろしくお願いします。
0131130
04/04/11 23:57ID:???0132nobodyさん
04/04/12 11:36ID:???共有サーバのため、できるだけ負荷をかけたくありません。
そこで呼び出し回数の多いリロード部をなんとか高速化しようと考えています。
perlで書かれたその部分をphpにおきかえた場合、高速化の効果はありますか?
処理内容は 設定ファイル、ログファイルを読む->正規表現でちょっと加工->出力 です。
# htmlファイルを作成してそれをリロードさせる方法のほうが負荷が低いことはわかっているのですが、「囁き」系機能が実現できないためこの方法がとれません。
# もしほかにナイスアイディアがありましたらお教えください。
0134nobodyさん
04/04/12 15:33ID:???おっしゃるとーりなんだけど、こんな初心者質問するくらいphpは無知なんです・・。
混在するなんて気持ち悪いしそれならいっそC言語で組めよとかおっしゃらずに、
速度比較教えてくれると嬉すぃ。
0135nobodyさん
04/04/12 16:36ID:???PHP(CGI) < perl < PHP(モジュール) < mod_perl の順に速いと言われている。
でも、そんなのは微々たるもので、処理内容を見直した方が速く・低負荷になる。
例えば、設定ファイルの読み込み。
ファイルの存在チェックして読み込んでデリミタで区切って変数に設定して....
とか無駄が多い。高速化・低負荷を考えるならソース内に決め打ちにしてしまえっ!
ログ読み込みで正規表現も無駄無駄ムダムダムダムダムダニダムダ!!!
既に置き換えた部分は一時ファイルに保存しておいて加工処理を最小限にするっ!
0136nobodyさん
04/04/12 16:41ID:???なら余り考えない方が良いよ。
素人の浅知恵(煽りじゃなくて)
わかる言語(Perlか?)で、今使ってるスクリプトの
設計を見直す。わかる言語が無けりゃ、何種類かの
スクリプトを使用感や性能比較して選択する。
自動車だって乗ってる奴が全員エンジン設計や
車体設計が出来るわけじゃないだろ、それと同じ。
ユーザはユーザでやるべき事がある。それくらいはやれ。
0138nobodyさん
04/04/12 16:55ID:???だったら尚更どれかひとつの言語をちゃんと習熟した方が
良いと思う。Perlで全然問題ないよ。
囁きって私信だよね。
今ログはグローバルな発言と囁きで分けて、混合してるの?
それとも混在してるものを出力時にパーソナライズ?
0139nobodyさん
04/04/12 17:40ID:???あ。PHPって全部勝手にモジュールになるんだとおもってますた。(阿呆)
いわゆる普通のレン鯖だとphpはCGIになるんかな。
>>136
だいたい高速化はperlと同じだろー、だったらオーバーヘッド少ないほう使おうーという浅知恵。
>>137
レン鯖に入れてもらえないんじゃゴルァ!
>>138
現在の仕様
■ログファイル:
<b>モナー></b>えー、しんじらんなーい<br>
<b>ぎこ></b>電話番号教えてよ<br>[私信:モナー<>127.0.0.1]
■処理
while(<IN>){
next if (ログ行が私信 and 俺は私信を受け取る人物じゃない)
print $_;
}
0140nobodyさん
04/04/12 17:41ID:???「モナーgD45hj5aei0.htm、ぎこbR93DPaigy22.htm」
と用意して発言があったときに両方更新して、
リロードは<META HTTP-EQUIV="Refresh">、という方法。(IPを元にハッシュをつけて他人が見られないように)
2chのチャットスレで見たのは、更新された発言数行だけを得て、表示はjavascriptで行う方法。これは早かった。
ただ、チャットの表示形式はある程度の柔軟性・拡張性が必要です。
マルチルームで部屋ごとに別の設定が求められるためです。
極端な例としてはある月は発言色を動的にグラディエーションに、ある月は縦書きにするだとかが求められることもあります。
# ぜんぜんPHPスレじゃなくスマソ。
0141nobodyさん
04/04/12 17:51ID:N7Xr04dJTESTPAGE<br>
<form action="<? echo $_SERVER[PHP_SELF]; ?>" method="POST">
URL: <input type="text" size="60" name="url" value="http://www.yahoo.co.jp">
<input type="submit" value="get"><br>
<?php
if(ereg("^http://",$_POST[url]) && isset($_POST[url])):
$page = readfile($_POST[url]);
echo "<hr>総バイト数 $page";
endif;
?>
作動しないんですけど何が原因でしょうか?
0142nobodyさん
04/04/12 18:47ID:???mb_convert_encoding等の関数を利用するにはどうすればいいんでしょうか…?
0143nobodyさん
04/04/12 19:27ID:???php.iniでmbstringエクステンションを
ロードするように、コメントアウト
;extension=php_mbstring.dll
してるのを外す。それで上手くロードできなければ
マニュアルみてphp.iniの設定関係を見直せ。
■ このスレッドは過去ログ倉庫に格納されています