【PHP】下らねぇ質問はここに書き込みやがれ 43
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/01(日) 04:21:50ID:VGqlLhlDPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0255nobodyさん
2007/04/04(水) 17:36:18ID:???0256nobodyさん
2007/04/04(水) 17:36:45ID:???http://jp.php.net/manual/ja/functions.variable-functions.php
0257nobodyさん
2007/04/04(水) 17:37:56ID:???コールする側で参照するか、PHP5ならオブジェクト渡すか。
0258nobodyさん
2007/04/04(水) 17:41:05ID:???0259nobodyさん
2007/04/04(水) 17:41:23ID:???あれば便利だけども、なくてもそれほど問題はないからな
0261nobodyさん
2007/04/04(水) 18:34:49ID:PZ7+vB49ありました。ありがとうございました。
0262nobodyさん
2007/04/04(水) 19:42:34ID:o8UCEOfE○秒後に実行させるという。(表示されるのではなく)
Javascriptでやっているのですが、基本的にPHPのページなもので
もし可能であればPHPのみで出来ればと思います。
0263nobodyさん
2007/04/04(水) 19:46:45ID:???0264nobodyさん
2007/04/04(水) 19:55:29ID:???0265247
2007/04/04(水) 20:00:52ID:PZ7+vB49すみません、ちょっと対数グラフではないようです。
イメージ的には http://sv2ch.baila6.jp/graph_load.cgi?news23.2ch.net のような
グラフを描きたいのですが、こういうのは一般的に対数グラフになるんですか?
0266nobodyさん
2007/04/04(水) 20:02:40ID:???0267262
2007/04/04(水) 20:38:52ID:???sleepだとページ全体が表示されるのを遅らす事になります。
なので、sleepの間は何も表示されません。
また、metaで別ページに飛ばすのでもないです。
そうではなくてPHPファイル(test.phpなど)のHTMLの部分は表示されていて
プログラム実行箇所は○秒遅れたら良いのです。
0268nobodyさん
2007/04/04(水) 20:40:21ID:???今、smartyを初めていじってて、単純なプログラムを作ったんだけど、
文字化けするトラブルが発生しました。
最初に言うと、smartyを使う点以外はコレまでに作ってきたプログラムと
同じようにしてるので、いきなり文字化けが発生したというのはやっぱり
smartyに関係した問題かなと思ってるんですが、どういう原因が考えられるでしょう?
(1)PHPファイル コレをブラウザで開きます---------------------
<?php
require_once("MySmarty.class.php");
$o_smarty = new MySmarty();
$o_smarty->assign("MyName","YAMADA,Yoshihiro");
$o_smarty->display("sample.tpl");
?>
(2)sample.tpl テンプレファイル---------------------
<html><head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>Smartyのテスト</title></head>
<body>
私の名前は{$MyName}です。
</body></html>
(3)MySmarty.class.php ---------------------
<?php
require_once("MySmarty.class.php");
$o_smarty = new MySmarty();
$o_smarty->assign("MyName","YAMADA,Yoshihiro");
$o_smarty->display("sample.tpl");
?>
0270nobodyさん
2007/04/04(水) 20:44:58ID:???0271268
2007/04/04(水) 20:51:35ID:???(1)PHPファイル コレをブラウザで開きます---------------------
<?php
require_once("MySmarty.class.php");
$o_smarty = new MySmarty();
$o_smarty->assign("MyName","YAMADA,Yoshihiro");
$o_smarty->display("sample.tpl");
?>
(2)sample.tpl テンプレファイル---------------------
<html><head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>Smartyのテスト</title></head>
<body>
私の名前は{$MyName}です。
</body></html>
(3)MySmarty.class.php ---------------------
<?php
require_once("/php/include/smarty/libs/smarty.class.php");
class MySmarty extends Smarty{
public function __construct(){
$this->Smarty();
$this->template_dir="./templates";
$this->compile_dir="./templates_c";
$this->cache_dir="../cache/";
$this->caching=false;
}
}
?>
開発環境はwinXP apache2 php5です
0272nobodyさん
2007/04/04(水) 20:57:02ID:???内部コードは?
テンプレートはもちろんEUCなんだよな?
ブラウザの文字コード変換で適当に変えて何のコードになってるか分かる状態か?
0273nobodyさん
2007/04/04(水) 21:00:51ID:???テーブルの文字コードはEUCで、CSVの出力をSJISにしたいのですが、
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=hoge.csv");
〜以降printで内容出力
こんな感じで出力するとファイルがEUCで出力されます。
Smartyがらみでphp.iniでは以下の設定をしてます。
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP
HTMLの出力はこれでSJISになっているんですが、
CSVの出力だと関係ないんでしょうか?
0274268
2007/04/04(水) 21:02:28ID:???回答ありがとうございます。
テンプレート(sample.tpl)はEUCで保存してます
ブラウザの文字コードももちろんEUCで出力されてるんですが化けていて、
SJISやISOなどに変更しても化けています。
ちなみに、「????O??AMADA,Yoshihiro???B」 となります。
smartyだけの文字コードをいじる設定があるのかとphpinfoで調べても
該当項目がないみたいなので困ってしまいました
0276nobodyさん
2007/04/04(水) 21:08:44ID:???sample.tplの
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
これcharset=Shit-JISの間違いじゃ??
0277nobodyさん
2007/04/04(水) 21:17:47ID:???function s_outputfilter($str)
{
print_r(mb_detect_encoding($str, 'auto'));
}
$o_smarty->register_outputfilter('s_outputfilter');
解決策ではないが、とりあえずこれを実行して表示前のコードを調べてみれ
0278268
2007/04/04(水) 21:24:20ID:???SJISってでました!
どういうこと???
smartyはSJIS書き出しが標準ってこと??
どこに設定ファイルがあるんでしょうか?
>>276
なんで判ったんですか?
0279nobodyさん
2007/04/04(水) 21:26:26ID:???その直後に排他ファイルロックかけると
同スクリプトでほぼ同時に同じ処理をしようとした人は
その処理中ファイルの読み込みさえ出来なくなるんですかね?
つか、fopenの読み込み+書き込み専用で開くとかどういう意味があるのですか?
読み込み専用のみで開いても読み込み+書き込み専用で開いても
後者選んどけば何の不自由なくすべて処理できるのでは?
0281268
2007/04/04(水) 21:45:46ID:???cakePHPに移行します
0283nobodyさん
2007/04/04(水) 21:48:20ID:???0284nobodyさん
2007/04/04(水) 21:48:49ID:M2pD0HVK可読性やメンテナンス性高めたいんだけど
そういうのの勉強できそうなきれいでわかりやすいphpのコードやtipsって
どこかにありませんか。
本人ですら後で読み返した時1から思い出さないとよくわからないことが多いです。
ありがとうございます、
もしお暇でしたら下記質問も教えてもらえるとうれしいです。
ロックかけた後は別の人が同時に同じプログラム
の投稿ボタンを押してもはじかれるという事でよいのでしょうか。
ロックかけた後、そのファイルを自分で再度呼び出す分には問題なくて?
そうです、色々アドバイスを頂いたのをまとめた結果、
記事にナンバー(ID)振ってナンバーの並びが歯抜けになっても放置で
それを削除していく方式にしました。
それでファイルにロックかけて前の記事のナンバーを取り出し1を加算していこうとしているのですが
ファイルロック関連で疑問に思った事がありまして・・・・・・
本で調べてみたのですが概念的なことしか載ってなくて
具体的に疑問点が解決できませんでした。
何度もすいません。
0290nobodyさん
2007/04/04(水) 22:34:35ID:GchyYXGQUTF-8で表示されているフォームから特殊文字(??)を入力して
送信するとそのままバイナリで送信されてくるのですが
sjisやujisなフォームから送信するとHTMLコードで送信されてきます(&#9685;&#3642;)
UTF-8の場合、そのままsjis-win等に変換すると特殊文字が壊れてしまいます。
何がやりたいかと言うと。
携帯絵文字の入力も想定しているので、どうしてもUTF-8 -> SJISへ変換する作業が
必要になるのですがUTF-8で送られて来た場合でも&#9685;&#3642;の様なHTMLコードにしたいのです。
これを実装するにはUTF-8のバイナリとHTMLコードの変換マップ等を
作らないと実装できないものでしょうか?
どなたかお力添えお願い致します。
それだとラジオボタンでの削除の際、
不具合出るとのことでした。
DBも今勉強1からはじめると大変そうなので
完成後置き換えるようにしたいと思います。
0292290
2007/04/04(水) 22:37:21ID:GchyYXGQと化けてしまいました申し訳ないです。
()内に入る特殊文字はこれです。
??
0293nobodyさん
2007/04/04(水) 22:37:44ID:???なんで?
ユニークナンバーをキーにして削除すればいいじゃん?
(つーかラジオボタンだろうとチェックボックスだろうとセレクトボックスだろうと同じこと)
0294nobodyさん
2007/04/04(水) 22:38:41ID:???>sjisやujisなフォームから送信するとHTMLコードで送信されてきます(&#9685;&#3642;)
>UTF-8で送られて来た場合でも&#9685;&#3642;の様なHTMLコードにしたいのです。
???
0295290
2007/04/04(水) 22:48:38ID:GchyYXGQ>>294
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/6003/ura/moji.html
やりたいこととしては上記ページのコードではなく実際の絵文字の方をそのまま
コピペしてPOSTした時に正常に表示させたいのです。
0296290
2007/04/04(水) 22:57:14ID:GchyYXGQ補足です。
コピペしてPOSTしてからSJISに変換しても壊れないようにしたいのです。
0297nobodyさん
2007/04/04(水) 22:57:46ID:Rqzs89IS>>250
ありがとうございます。
if(!$a = intval($b)){
$a = 0;
}
上記での ! がどのような意味になっているのか教えてください。
「$bを整数へ変換できず、$bの値を$aへ代入できない場合」、すなわち
「$a = intval($b) が成立しない場合」という理解でいいのでしょうか。
ここでの ! の使い方がいまいち分かりません。
0298nobodyさん
2007/04/04(水) 23:15:37ID:???2.その返り値を$aに代入する
3.2の式(=$aの値)の否定を取ったものが真になるか判断する
変換できないとか代入できないとかいう判断はここではありません.
0299nobodyさん
2007/04/04(水) 23:18:23ID:???なんか解釈の仕方が変だぞ
分岐と式の仕様を理解していないのか?
!は否定の演算子
$a = intval($b) の否定。
その例文の場合だと、intval($b) の結果を $a に代入して、
それが 0 なら分岐する
0300nobodyさん
2007/04/04(水) 23:22:18ID:???俺が誠心誠意を持って答えてやるから質問ぶつけてこい!
PHPに対するあついハートをわすれるなよ!
0301nobodyさん
2007/04/04(水) 23:35:01ID:???例えば2番目にあらわれた<table>〜</table>までを取得する方法を教えてください
(上記の”〜”の中にもtableが含まれていたりするとお手上げなのです)
0302nobodyさん
2007/04/04(水) 23:37:48ID:???2番目にあらわれた<table>〜</table>までを目で見て判断する。
次におもむろにCtrl+Cを押してコピーし、適当な箇所へCtrl+Vを押して貼り付ける。
0303nobodyさん
2007/04/04(水) 23:54:00ID:???0304nobodyさん
2007/04/04(水) 23:54:24ID:???【test.txtの内容】
<html>
<head>
<title>テスト</title></head>
<body>
<table>
<tr><table><tr><td>これを取得する</td></tr></table></td>
</tr>
</table>
</body></html>
【test.phpの内容】
$file = file_get_contents("test.txt");
preg_match("[(<table>.*?</table>)]",$file,$array);
print_r($array);
0307300
2007/04/04(水) 23:57:27ID:???0308nobodyさん
2007/04/04(水) 23:58:25ID:???$b = $a++;
これで$bが3だから驚いた
0310nobodyさん
2007/04/05(木) 00:01:50ID:???いや、マニュアルだと!の方が高かったんだけど、
それだと>>248の書き方は文法的におかしくない?
実際やってみたら動いたわけだけど、何か見落としてる?
0311nobodyさん
2007/04/05(木) 00:09:24ID:???if(!$a = intval($b)){
$a = 0;
}
【$A = $B】
$Bを$Aに代入する
【$A = "a"】
$Aはaである
【!$A = "a"】
$Aはaではない
これで理解しろ
0312nobodyさん
2007/04/05(木) 00:10:39ID:???見落としてると思う。
第十五章
>注意: ! は = よりも優先されるはず なのにもかかわらず、
>PHP は依然として if (!$a = foo()) のような式も許します。この場合は foo() の出力が $a に代入されます。
0313nobodyさん
2007/04/05(木) 00:11:45ID:???if(!$a = intval($b)){
$a = 0;
}
$bの値が整数だったばあいいif分の中身が実行されるが、
$bになにも格納されてなかったら動かないぞ
0317nobodyさん
2007/04/05(木) 00:15:05ID:???ほんとだ、見落としてた。
というとつまり、!$a = $b みたいな形の式のみ特例的に=の方が優先順位が高くなる、ってことか。
それはちょっと・・・どうよ?
0318312
2007/04/05(木) 00:20:53ID:???英文だと
if (!$a = foo()), in which case the return value of foo() is put into $a.
となってるから、!$a=$bじゃなくて、関数の返し値の代入に限ってって感じだと思うよ。
つまり関数の方の動作を優先するってことなんだろうなあ。
0319nobodyさん
2007/04/05(木) 00:21:44ID:???0321nobodyさん
2007/04/05(木) 00:29:04ID:???0322312
2007/04/05(木) 00:36:05ID:???みたいだね。
$a = 1;$b = 0;
if(!$a = $b) {
echo $a;
}
で 0 が出力結果になるな。
0323301
2007/04/05(木) 00:47:30ID:???とりあえず改行を無視して
$html = '<table><tr><td>→<table><tr><td>これを取得する</td></tr></table>←</td></tr></table>';
preg_match("[(<table>.*?</table>)]", $html, $array);
print_r($array);
とやってみました
イメージとしては $array[0]に$html全体が
$array[1]に→この部分←が入るような形になればありがたいのですが…
0324nobodyさん
2007/04/05(木) 00:58:55ID:???ネストをきれいに表現してる正規表現のサンプル見たことあるな。
元レスから判断するけどn番目のテーブル全体が欲しいんだったら
対応する括弧を見つけるロジックでいいんじゃないのか。
0326301
2007/04/05(木) 01:29:36ID:???正規表現は前に何度も躓いていますし、なんか自分でも無理かと…
324さんと325さんのおっしゃってる意味は同じと考えていいのでしょうか?
対応する括弧を見つけるロジック = 再帰
なんでしょうか???
実はファイル(ディレクトリ)操作を勉強している時に「再帰」が出来てきて
理解を頓挫したことがあります(都合のいいサンプルをそのまま使いました…)
階乗で解説してあるサイトなどで勉強してみましたが、今回のケースに
当てはめることが全く出来ません
もしよろしければヒントでもいただけないでしょうか?
0327nobodyさん
2007/04/05(木) 02:48:53ID:???0328nobodyさん
2007/04/05(木) 03:28:47ID:???tableタグの数をカウントアップ、閉じるタグでカウントダウンして、ゼロになってところで間の要素を再帰で同じ処理すればいいんじゃないか?
0330nobodyさん
2007/04/05(木) 04:03:17ID:???0331nobodyさん
2007/04/05(木) 04:22:53ID:???0332nobodyさん
2007/04/05(木) 10:01:00ID:???function htmlspecialcharsplus($value)
{
// サニタイズして出力します
echo htmlspecialchars($value);
}
0334nobodyさん
2007/04/05(木) 10:32:46ID:???そういうのは、htmlをxml文書として扱いましょう。
自分ならPEARのXML_Serializeクラスつかうけど。
0336nobodyさん
2007/04/05(木) 12:47:31ID:???対象htmlファイルの構造が常にいっしょ
もしくは、tableタグに必ずidがついてる
みたいな条件下じゃないとどこかで再帰的な手法が必要になるんじゃないかな。
0338nobodyさん
2007/04/05(木) 13:01:20ID:???送られてきた指定した画像のサイズを変え保存するにはどうしたらいいでしょうか?
GD入れないとダメすか?
また、保存する場所ですがDBにいれるか、ファイルを置くディレクトリを設置するか迷っています。
DBに入れた場合、DBの動作(SELECTなどの)は遅くなりますか?
0339nobodyさん
2007/04/05(木) 13:18:45ID:ln1txq/N誰か教えてくださいお願いします。
ちなみにOSはWiiiiiinXP
今のところのエラーはメールこねーy+文字化け杉
文字コードの設定とかkwskおしえてほしす
0341>339
2007/04/05(木) 13:36:29ID:???落としてきたPHPの設置方法はうpするだけと書いてあるんですが
うpしてもロカルでも動かないので何か要るのかしらと思って悩んでます。。
一応持ってるだけなんですがアパチ2とPHP5はおいてある。
でも使い方とかはHello World+print、echo止まりだから全然わかりまてん
0342nobodyさん
2007/04/05(木) 13:44:53ID:???0343nobodyさん
2007/04/05(木) 13:45:50ID:???0344nobodyさん
2007/04/05(木) 13:48:16ID:???0345nobodyさん
2007/04/05(木) 13:50:03ID:???0346nobodyさん
2007/04/05(木) 13:50:21ID:ln1txq/Nえと、うp自体はPHP可レンタル鯖にうpしてるんだけどSMTP鯖起こさないといけないんですか?
>343
すまんかった
Proです
0347nobodyさん
2007/04/05(木) 13:52:39ID:???日本語で話して下さい
0348nobodyさん
2007/04/05(木) 13:54:39ID:???0349nobodyさん
2007/04/05(木) 14:06:10ID:???0350nobodyさん
2007/04/05(木) 14:09:03ID:ln1txq/N配布スクリプトくらいうpして動かせてよ・・・
0351nobodyさん
2007/04/05(木) 14:18:30ID:???意味が分からない
0352nobodyさん
2007/04/05(木) 14:28:45ID:???使っている人、やっぱり格段に効率化できました?
入力データ検証とかみると便利そうだなと思いますが、
それ以外で効果抜群だった点など教えてください。
0353nobodyさん
2007/04/05(木) 14:29:12ID:???0354nobodyさん
2007/04/05(木) 14:34:37ID:ln1txq/Nhttp://php.eweb-design.com/1301_mail.html
0355nobodyさん
2007/04/05(木) 14:37:28ID:???mysqlでの文字コードの関係が
ごちゃごちゃしてて理解できずにいるんですが、
詳しいサイトないでしょうか?
phpのソースをUTF8で書いて、
MySQLの文字コードがEUC固定の場合に、文字化けを発生させないようにできるんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています