【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
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-10辺り
0666nobodyさん
2005/04/10(日) 20:38:13ID:???俺の知り合いの奴らなんてみんな月の手取り30〜40ぐらいでひ〜ひ〜言ってるが、普通はそんなもんだろ。
俺はリーマンやったことないから分からんが。
知り合いに>>653みたいな事を言う職業プログラマがいるんだが、年収350万ぐらいだって聞いて
なんか惨めだな〜と思って。
俺は大学時代な〜んも勉強せずに、5年程前フリーターやりながら趣味で覚えたperl⇒PHPレベル。
今年の確定申告で250程国に貢いできたといえば、年収も分かるだろ。
大した事はないが、それでもそこらのリーマンよりはよっぽど稼いでるわけで。
何が言いたいかというと、くだらん事にこだわらずに効率よく結果を出しゃぁいいんだよって事だ。
苦労せずとも結果が出せるに越した事はない。
自己満足の世界に陶酔しても、金が稼げるわけでもなし。
>>665
携帯関連とか株関連の板見た事無いみたいだね。
年収1000万程度(スレによってはカス扱い)の奴なんか腐る程いるぞ。
0667nobodyさん
2005/04/10(日) 20:38:29ID:???どんどん便利になっていくし使う人への敷居も低くなっていく
でもそれを先人が「使う人間のレベルが下がった」だけで
割り切ってしまうのもなんだかなあ
0668nobodyさん
2005/04/10(日) 21:02:23ID:H4Hn0Vk9ディレクトリの所有者とスクリプトの所有者が一致していなければ
いけないらしいので、PHPスクリプトを自動生成するスクリプト内で、
//makephpfile.php
$filep = fopen("test.php","w"); //open file
chown("test.php",'username');
flock($filep, LOCK_EX);
fputs($filep,$dat); //write data
fclose($filep);
としたのですが、スクリプトファイルの所有者がapacheになってしまい
ファイルの読み込みなどがうまくいきません。
スクリプトを生成するファイル(makephpfile.php)とそれが入っている
ディレクトリの所有者は、usernameで統一しています。
誰かいい解決方法を知っていたら教えてください。
よろしくお願いします。
0669nobodyさん
2005/04/10(日) 21:16:07ID:???昔はよかったとか、今はミーハーなファンばっかりだとか言う奴いるけど
そういうのと同じじゃない?
0670nobodyさん
2005/04/10(日) 21:41:42ID:???0671nobodyさん
2005/04/10(日) 21:48:57ID:???0672nobodyさん
2005/04/10(日) 22:26:19ID:???ファイルの所有者を変更できるのはふつうrootだけ
というわけで別の方法を考えた方が良さそう。管理者にgidで
チェックするようにしてくれって頼むとか。
0673nobodyさん
2005/04/10(日) 23:14:44ID:???ereg_replace("^.+?\.","*****.",$str);
これで下の様に頭の部分を隠したいのですがエラーが発生してしまいます
何かPHPの記述方法があるのでしょうか?
*****.hoge.tokyo.ne.jp
0674nobodyさん
2005/04/10(日) 23:29:59ID:???フォルダの残量は disk_free_space を使って表示できたのですが、
使用量をどのようにして表示させようか悩んでいます。
ちなみに、PHPはセーフモードで動いています。
$dir_space = `du -sb ./test`;も使おうとしましたが、うまくいきません。
ご教授よろしくお願いします。
0675nobodyさん
2005/04/10(日) 23:30:42ID:???ereg_replace("^[^\.]+(\..+)$",\\1 ,$hoge)
質問です
ファイルに書き込みをしていますが
fputs($fp, 'うんうん'."\n")
を2回繰り返しても改行されず「うんうんうんうん」になってしまいます。どこがおかしいのですか?
0676nobodyさん
2005/04/10(日) 23:51:06ID:???ドットの否定で逝けましたヒントありがとん
ereg_replace("^[^\.]+","*****" ,$str);
1. \n --> <BR>
2. \n --> \r\n
とかかな
0677nobodyさん
2005/04/11(月) 16:47:47ID:???if (pg_connection_status($db) == PGSQL_CONNECTION_OK) {
echo "DB Connetcion status is OK!";
}
else {
echo "DB Connection status ERROR";
}
$sql = 'select * from tablename';
$result = pg_query($db, $sql);
で、結果が
Connection status is OK!
Warning: pg_query(): supplied argument is not a valid PostgreSQL link resource in filename.php on line 10
となってしまうのは、何が原因なんでしょう??
postmaster は動いていますし、一瞬検索ができた時もありました・・・・・
PHPは事象の再現性がヘンな時が多々ありますが、「そういうもの」なんでしょうか?
0678nobodyさん
2005/04/11(月) 21:57:46ID:???例えば
$int1 = 5; バイナリデータで101
$int2 = 10; バイナリデータで1010
この$int1と$int2をくっつけて、1011010というデータを持った変数を作りたいのです。
0679nobodyさん
2005/04/11(月) 22:21:08ID:d8tTZrxp以下の文を書いたのですがうまくいきません。
$text = preg_replace("^(1$)", "←合格", $text);
鈴木1
佐藤
田中
山本1
↓スクリプト実行
鈴木
佐藤←合格
田中←合格
山本
このような結果を出すためにはどのように書き換えたらよいでしょうか?
0680nobodyさん
2005/04/11(月) 22:45:48ID:???そういう値が欲しいのなら素直にシフトさせてandを取る。
二進数表現の文字列が欲しいのならsprintf("%b%b",,)
>>679
ハット記号はその場合否定じゃなくって行頭になる
多分こんな感じかな
preg_replace('/([^1])$/', '¥1<-合格', $text)
0681nobodyさん
2005/04/11(月) 23:45:32ID:???GD Graphics Library "gdImageCreateFromPngCtx()" Integer Overflow
Software: GD Graphics Library 2.x
Update to version 2.0.32 or later.
http://secunia.com/advisories/12996/
これに対応してるのかな?
0682668
2005/04/12(火) 00:12:58ID:???返信ありがとうございます。
Xreaのサポート掲示板に問い合わせたところ、
GIDチェックモードは無理でしたが、PerlのCGIで
何とか解決しました。
0683nobodyさん
2005/04/12(火) 01:25:26ID:???preg_match("/[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}?/", $str)
└OK
mb_regex_encoding("SJIS");
mb_ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}", $str)
└OK(?つけてもOK)
mb_ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}", $str)
└mb_ereg(): mbregex compile err: premature end of regular expression
mb_ereg("^[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z\.\-]+\.[0-9a-zA-Z]+$",$str)
└OK
ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}?", $str)
└ereg(): REG_BADRPT
ereg("[\x20-\x7E\xA1-\xA5\xDE-\xDF]{50,}", $str)
└OK
お聞きしたいことがあります、
・eregの最短指定"?"の有無
・mb_eregのエンコーディング指定によってエラーが起こらないもの
そもそもエラーが起こらないものの違い
0684nobodyさん
2005/04/12(火) 02:16:01ID:???$name[] = &HTML_QuickForm::createElement('text', '姓', null, '姓');
$name[] = &HTML_QuickForm::createElement('text', '名', null, '名');
$form->addGroup($name, 'name', '名前', ' ');
こんな感じでテキストフィールドの前にラベル付けたいんだけど、
できなかった毛?
0685nobodyさん
2005/04/12(火) 06:51:49ID:???$renderer = & $form->defaultRenderer();
$renderer->setGroupElementTemplate('{label} {element}', 'name');
てな感じで可能かと。
group.phpのtoHTML()の中で、上と同様の処理があって そこで{element}だけにしているので
elementのラベルが消えてるんじゃないかなぁ。あんまり自信ないけど。
0686nobodyさん
2005/04/12(火) 09:55:50ID:???<FORM ACTION="http://www.example.com/example.php" METHOD=POST>
氏名:<INPUT TYPE=TEXT NAME="name"><BR>
メールアドレス:<INPUT TYPE=TEXT NAME="email" ISTYLE=3> <BR>
<BR>
選択<BR>
<SELECT NAME="test">
<OPTION VALUE="a">A
<OPTION VALUE="b">B
<OPTION VALUE="c">C
</SELECT><BR>
<BR>
テスト<BR>
<TEXTAREA NAME="impression" rows=" COLS=10 5"></TEXTAREA><BR>
<BR>
テスト<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="a">A<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="b>B<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="c">C<BR>
<INPUT TYPE=RADIO NAME="test1" VALUE="d">D<BR>
<BR>
<INPUT TYPE=SUBMIT NAME="submit" VALUE="送信" id="submit"> <INPUT TYPE=RESET VALUE="やり直し"><BR>
<BR>
<BR>
</FORM>
内容を一度確認して送信するようにするには、どうすればよろしいですか?
0687nobodyさん
2005/04/12(火) 10:24:19ID:???http://pc8.2ch.net/test/read.cgi/php/1110697712/511-512
0688nobodyさん
2005/04/12(火) 11:42:38ID:???PHP でも欲しくね?もうある?
0689nobodyさん
2005/04/12(火) 11:51:03ID:???使いたくなったらRubyを使えばいいだけだし。
0690nobodyさん
2005/04/12(火) 17:41:03ID:???どうすればよいでしょうか?
思いつきません・・・
0692nobodyさん
2005/04/12(火) 20:28:41ID:???もれHTML_QuickForm_Renderer_Object使ってるから、
そのソメッド使えんみたいだわ。
QuickFormやめて、Flexyおんりーにするぽ。
0693nobodyさん
2005/04/12(火) 20:44:35ID:???perlの正規表現ではカッコで括ったところがマッチすると、
$1,$2という変数に格納してくれるという便利な機能がありますけど、
phpで似たようなことは出来ますでしょうか。
具体的には
2005/04/09(金),01時12分00秒,ほげほげ
という形のデータを
[01:12:00],ほげほげ
という、時刻とテキストだけの形に直したいんですが…。
自分ではカンマでsplitして、substrで何回かに分けて時、分、秒の変数を作って
後でそれをくっつけるという処理しか思いつきません。
どなたか簡潔な方法を知っていらしたらよろしくお願いします。
0694nobodyさん
2005/04/12(火) 20:52:21ID:???0695nobodyさん
2005/04/12(火) 21:22:42ID:???0696nobodyさん
2005/04/12(火) 21:23:32ID:???0697nobodyさん
2005/04/12(火) 23:22:24ID:???$hoge=ereg_replace("([0-9]{2})時([0-9]{2})分([0-9]{2})秒", "[(\\1):(\\2):(\\3)]", $hoge);
みたいにしたんですが無理でした。
なんでだろ…。
0698697
2005/04/12(火) 23:24:47ID:???0699nobodyさん
2005/04/12(火) 23:46:47ID:???0700697
2005/04/12(火) 23:47:03ID:???0701nobodyさん
2005/04/13(水) 00:31:58ID:???0702nobodyさん
2005/04/13(水) 01:11:49ID:???漏れはセッション使用するときに
session_cache_limiter('none');
こうやって設定しているんだが、これはセキュリティーホールになりますか。
0703nobodyさん
2005/04/13(水) 01:42:35ID:???フォームから投稿内容を受け取り記事追加処理をするphpファイルを新たに作るか、
それとも外部ファイルに記事追加処理関数を書いてその関数を呼び出す形を取るか、
どちらがいいと思いますか?あるいは他にもっといい方法がありますか?
0704nobodyさん
2005/04/13(水) 02:02:01ID:???0705nobodyさん
2005/04/13(水) 02:11:31ID:???もしそうだと、どの処理をする時にもswitch処理が必要になって
それなら最初から関数を分けてしまった方が処理が速そうな気がするんだけど。
0706nobodyさん
2005/04/13(水) 02:23:22ID:???レスありがとう。
ファイルにするとユーザーとの通信の手間が入ってくるわけでその点が余計な負荷になる。
外部ファイルの関数にすると、もしかしてその関数を使わない場合でもメモリに外部ファイルがロードされてしまうのかと思うと
フォームを開いただけで投稿処理をしなかった場合に無駄になる。
単純に書きやすい方で選ぶというだけでは無い選択肢だと思うんだが。
0707nobodyさん
2005/04/13(水) 03:28:56ID:???関数が増えると関数を特定する処理に選択肢が増え(ry
ていうかそれくらいのこと、処理速度にはほとんど影響ないだろ
気にするな
>>706
おまえもその程度の負荷は気にするな
0709nobodyさん
2005/04/13(水) 07:54:01ID:???いいぞ ベイべー!
負荷をかけるやつは普通のプログラムだ!!
負荷をかけないやつは何もしないプログラムだ!!
ホント 戦場は地獄だぜ! フゥハハハーハァー
0710nobodyさん
2005/04/13(水) 09:06:20ID:???処理の多くが他のユーザー定義関数と「かぶる」場合、「かぶらない」部分だけ
switch〜caseなんかで分岐させれば、コードを短くできる。また「かぶる」部分
に何らかの修正が必要となった場合、関数1つなら1つ修正すればいいだけだが、
関数を分けていれば全部を修正しないといけない。
>>706もだけど、処理スピードなんて気にする暇あったら、もっと他に考えなけ
ればいけない事があるんではないの?と俺は思った。
>>706
そこまで気にするなら、投稿処理の時だけ該当ファイルをrequireすればいい。
CPUやメモリの負荷率見れるなら見てみ。
全く気にする必要のないレベルに間違いない。
0711nobodyさん
2005/04/13(水) 13:42:08ID:y+S//+Zcphpでブラウザのjavascriptがonになっているかどうかは、確認できるの?
0712nobodyさん
2005/04/13(水) 14:01:22ID:???JavaScript(の適当な命令)がphpを呼び出せればJavaScriptを使える
(少なくとも呼び出しに使ったJavaScriptの命令が使える)、つー方針でなら可能かと。
オイラはそんな面倒なことをしたくないので、ブラウザ側でJavaScript利用可・不可のチェックをさせるけど。
0713nobodyさん
2005/04/13(水) 15:50:16ID:???こちらのスレで質問させて頂きたく思います。どうか宣しくお願い致します。
自分は今現在、趣味の範囲と見様見真似で「見た目が 2ch 型」のソレらしい掲示板を
自力で作り、一通りの動作確認を終えて、ソースコードの整理をしているところなのですが、
自分の思い付きで書いたコードが今一つしっくり来ないと言うか、もっとスマートな書き方が
出来ないものかと少し悩んでいます。
実際に真似をし始めて初めて知った 2ch 型掲示板特有?の妙なレス番指定方法
(/l50 とか /-50 とか) の文字列に対応させる為、
preg_match("/^(\d+)$|^l(\d+)(n)?.*$|^(\d+)(n)?-$|^-(\d+)(n)?$|^(\d+)(n)?-(\d+)(n)?$/",$string,$result);
という様な正規表現を指定し、$string 中に有るレス番指定文字を $result に取り込んだ
後、配列 $result の個数とその中身によって処理を分岐させる様な事をしています。
これらをもっとスマートに書こうとしたら、一体どの様にすれば宣しいのでしょうか?
0714nobodyさん
2005/04/13(水) 16:55:06ID:???スマートって言うのがどういうのかわからない
1行で済ませるのがスマートだったら全然駄目だけど
昔のクエリ方式と互換性も足せるために
$st = $to = 0;
$nofirst = '';
$ls = 0;
if ($_SERVER['PATH_INFO']) {
$pairs = explode('/',$_SERVER['PATH_INFO']);
$bbs = $pairs[1];
$key = $pairs[2];
if ($pairs[3]) {
if (strstr($pairs[3], 'n')) {
$nofirst = 'true';
$pairs[3] = str_replace("n","",$pairs[3]);
}
if (substr($pairs[3], 0, 1) == 'l') {
$ls = substr($pairs[3],1);
}
elseif (strstr($pairs[3], '-')) {
list($st, $to) = explode('-',$pairs[3]);
if (!$st) $st = 1;
}
else {
$st = $pairs[3];
$to = $pairs[3];
$nofirst = 'true';
}
}
}
0715nobodyさん
2005/04/14(木) 00:11:49ID:???頭から置換の「^」を使って行頭から置換していると、
なぜかファイルの先頭の最初の一行だけマッチしません。
何かファイルの先端を示す不可視文字のようなものがくっついてるんでしょうか。
出来ましたら対処方法など教えて頂けたらうれしいです。
よろしくお願いします。
0716nobodyさん
2005/04/14(木) 00:21:43ID:???http://www.atmarkit.co.jp/aig/01xml/bom.html
http://e-words.jp/w/BOM.html
http://www.wdic.org/?word=BOM+:WDIC
http://www.birdport.jp/Others/unicode/
先頭3バイトを無視すればいい。
でも、UTF-8はBOMが付いていないことが多いから
単に3バイト無視すると悲劇が起こる予感。
0717nobodyさん
2005/04/14(木) 00:40:13ID:???ああ、ややこしそうですね。
とりあえずデータの形は全部一緒なので、
あまり意味のない保険かけずに
「^」の先頭マッチは外しておきます。
ありがとうございます
0718nobodyさん
2005/04/14(木) 01:02:17ID:???レスポンスヘッダー
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
がなくなります。このときに、コンテンツはプロキシ、クライアントに
キャッシュされるのでしょうか。
0719713
2005/04/14(木) 01:31:56ID:???自分としては、その辺の処理を正規表現で実現しているのかと思い込んでいたの
ですが、実際にはそんなに難しくない文字列操作関数だけでも十分なのですね。。
具体的な例を示して頂けた事も有って、その仕組みが良く理解出来ました。後は、
自分で組んでいるコードに合う形に直した上で拝借させて頂きたいと思います。
素早い返答を頂きながらも、こんな時間になるまでレス出来ず、申し訳有りません
でした。そして、ありがとうございました。
0720nobodyさん
2005/04/14(木) 07:53:17ID:???see RFC 2616.
post-check pre-checkはIE専用の拡張でMSDNに説明があったかと。
0722nobodyさん
2005/04/14(木) 12:49:56ID:ai8mxHPm最近になりApache2.0.52 + PHP5.0.2 + MySQL4.0
と言う構成にアップグレードしたのですが、CMS関係のPHPアプリケーションがインストールできなくなりました
特にphpMyAdminでは下記のようなエラーが表示されます
[1.20] 「cannot load MySQL extension, please check PHP Configuration(MySQL エクステンションをロードできません。PHP の設定をチェックしてください)」というエラーが出ます。
PHP が MySQL サーバに接続する際には「MySQL エクステンション」という MySQL の関数セットを必要とします。
このエクステンションは PHP の配布ファイルに含まれている(コンパイルで組み込まれている)こともありますが、そうでない場合、動的にロードする必要があります。
エクステンション名はたぶん mysql.so か php_mysql.dll のはずですが、phpMyAdmin はこのエクステンションをロードしようとして失敗しているわけです。
ふつう、この問題は「PHP-MySQL」とかなんとかという名前のソフトウェアパッケージをインストールすれば解決します。
php_mysql.dll は C:/WINNT/php.ini ファイルにて確かに指定しているため原因が掴めません。
extension_dir = "C:\php\ext"
extension=php_mysql.dll
Apache の再起動時にこのようなエラーが表示されます。
PHP Startup: Unable to load dynamic library 'C:\php\ext\php_mysql.dll' - 指定されたモジュールが見つかりません。
どうかご助力お願いします。
0723nobodyさん
2005/04/14(木) 13:06:16ID:???「指定されたモジュールが見つかりません。」
声を出して読んでみて!。
php_mysql.dllを検索してディレクトリを探し、そのディレクトリを
extension_dirにセットする。
窓ではディレクトリではなくフォルダか。
それにそんな事で悩んでいるようではtsファイルの移動も怪しいな。
Windowsで悩む奴の気がしれん・・・。
0725722
2005/04/14(木) 13:42:31ID:ai8mxHPmレスありがとうございます。
php_mysql.dll はc:/php/ext/php_mysql.dll にあります。
extension_dir = "C:\php\ext"
extension=php_mysql.dll
それで上記のように指定し C:/WINNT/php.ini に設定しました。
しかし動作してくれません、/と\を変えても効果なしでした。
tsファイルは C:/WINNT/system32/php5ts.dll にあります。
httpdやその他の設定などは、手元の教本と下のウェブを参考にしました。
http://okweb.jp/kotaeru.php3?q=945621&rev=1
0727nobodyさん
2005/04/14(木) 15:10:19ID:???残業でストレス溜まってるのは分かるけどさ
0728nobodyさん
2005/04/14(木) 15:57:15ID:???0729nobodyさん
2005/04/14(木) 17:47:12ID:HOg80ZtTソースは
$txt = "あいうえお#かきくけこ#";
preg_replace("#", " ", $txt, 1);
です。ereg_replaceだと見つけてくれるのですが、
回数を指定したいので、pregを使いたいのです。
よろしくお願いします。
0732nobodyさん
2005/04/14(木) 18:41:06ID:???$tpl = preg_replace("/{html:([a-z\_])}/",$bd[\\1],$tpl);
という感じで\\1をキーとして利用する方法はないでしょうか。
$key = array_keys($bd)でキーを拾得してwhileするしかないでしょうか?
0733nobodyさん
2005/04/14(木) 21:37:04ID:hazlvdsC質問するんならソースをもうちょっと分かりやすくして欲しい。
で、本題だが。
ちとズレるかもしれんが、strtrを使ってどうにかならんか?
0734733
2005/04/14(木) 21:42:49ID:???謝罪ついでに、もうちょい具体的に書いとく。
$tbl = strtr($tbl, $bd);
preg_replace("/html:[a-z\_]/","",$tbl);
この2行で希望する動作すると思うんだがどうだろう。
0735732
2005/04/14(木) 22:18:30ID:???お返事ありがとうございます
以下の行程を一行で出来ないかと想いまして^^;
$template テンプレートファイル {key}が仕込んであります
$this->bd {}と差し替えるキーと値
while($tmp = each($this->bd)){
$pt = '{'.$tmp[0].'}';
$template = str_replace($pt,$tmp[1],$template);
}
0736nobodyさん
2005/04/14(木) 22:59:25ID:4Pev5d6u以前(5.0.2の時)ちょっと触ってみて、
しばらく動かしていたら挙動があやしくなったので4に戻したのですが。
「一日一回くらい再起動させたら大丈夫」くらいの感じでしたが。
そろそろですかね。
0737733
2005/04/14(木) 23:09:50ID:???$this->bdってのがよく分からんが、、、
要は、
$bd['hoge'] = 'hage';
$bd['am'] = 'was';
という配列を元に
$template = 'i {am} {hoge}.'を
$template = 'i was hage.'にしたいんだろ?
それなら上にも書いてるが、$bdを加工してからstrtr使えば一発じゃないか?
foreach($bd as $key=>$value){
$newKey = '{'.$key.'}';
$bd_use[$newKey] = $value;
}
$template = strtr($template, $bd_use);
オレなら最初から$bdのキーを{hoge}にしとくけどな。そうすりゃ1行で済む。
0738nobodyさん
2005/04/14(木) 23:42:06ID:???preg_* の e オプションを使えば一行で書けるのでは?
$tpl = preg_replace("/{html:([a-z\_]+)}/e",'$bd["\\1"]',$tpl);
0739732
2005/04/15(金) 09:22:08ID:???テンプレファイルから{}で囲まれている全てのキーを拾得してから処理するように
しました。これはマッチしなかった{}がそのまま表示されるのを回避させる為です。
複数のページ構成を1つのテンプレで処理しようと考えております。
ただ、これだと{}で囲まれる全てが・・アウトですね--;
$template = $this->open_fie($path,'r');
preg_match_all('/{[1-z\_:]}/',$template,$keys);
while($pt = array_shift($keys[0])){
isset($this->bd[$pt]) || $this->bd[$pt] = '';
$template = str_replace($pt,$this->bd[$pt],$template);
}
echo $template;
>>737
$bdのキーを{hoge}にしておいてstrtr一行にしてみたけど上記より処理速度が遅いみたいです
>>738
上手く行かなかったです-;
0740732
2005/04/15(金) 09:25:12ID:???自己レス
preg_match_all('/{[1-z\_:]}/',$template,$keys);
↓
preg_match_all('/{[a-zA-Z\_\:]+}/',$template,$keys);
0741733
2005/04/15(金) 10:58:48ID:???対象の$templateのサイズ次第でスクリプトは変えなきゃいけないだろな。
時間や負担がかかるようなものならば、
毎回$templateを読み込む処理はまずい。
つまり、cron等で自動実行することになるが、それに速度は必要なのか、と思う。
余談だが、
$this->は実際にクラス処理だったのね。。。
なんか配列にキーを入れてるってのを示してる初心者かと思たよ、すまそ。
0742732
2005/04/15(金) 12:11:58ID:???いえいえ、こちらこそ小出しで申し訳ありません。
$templateのサイズが大きいので負荷が高くなりました-;。
$templateはブログのような感じで各ユーザーがテンプレではなく本当の意味で
自由にカスタマイズ出来る仕様にしたいと考えて試みたのですが負荷を考えると
ページ作成後に.htmlで吐き出して利用する事でしか方法はなさそうです。
ただ動的ページの事もありますし、sessionも利用しているので悩み所です。
ありがとうございました。
0743nobodyさん
2005/04/15(金) 12:32:06ID:???if($Slog[2]){
$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;
print<<"<!--HTML-->";
<tr id=log-10>
<td><font id=kei>$Slog[2]</font></td>
</tr>
<!--HTML-->
CGIで書いたこれをPHPに書き直すとどうなるんでしょうか?
<?php
if($Slog[2]){
?>
$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;
<tr id=log-10>
<td><font id=kei><?=$Slog[2]?></font></td>
</tr>
としてみたんですが、"$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;"が
ページに表示されてしまい上手くいきません。
0744nobodyさん
2005/04/15(金) 12:43:28ID:???phpの処理は<?php 〜 ?>の間でやるべし。
置換処理が外に出ちゃってるし、変数の表示も外。
PHPの記述概念を根本から勉強するべし。
0745nobodyさん
2005/04/15(金) 12:48:13ID:???関係しそうな部分をPerl - PHP - 内容 の表で書くと、
=~ str_replace 文字列の置換
print<< print<<< ヒアドキュメント
ってな感じになるが、単純な命令の置き換えじゃ無理だから理解しながら変更すれ。
0746743
2005/04/15(金) 12:59:34ID:???if($Slog[2]){
$Slog[2] =~ s/>/>/g; $Slog[2] =~ s/</</g;
?>
<tr id=log-10>
<td><font id=kei><?=$Slog[2]?></font></td>
</tr>
ともして見たんですが、これだと画面が真っ白で何も表示されなくなります。
どう記述すれば上手くいくんでしょうか?
0747nobodyさん
2005/04/15(金) 13:00:18ID:???お前「教えてgoo」でも質問しとったな
質問者がマルチする掲示板は回答者側も見てることが多いからマルチしても怒られるだけだよ。
0748nobodyさん
2005/04/15(金) 13:04:42ID:???0749743
2005/04/15(金) 13:23:34ID:???0750nobodyさん
2005/04/15(金) 13:34:58ID:???<?php
if($Slog[2]){
$Slog[2] = htmlspecialchars($Slog[2]);
print <<<_HERE_
<tr id=log-10>
<td><font id=kei>{$Slog[2]}</font></td>
</tr>
_HERE_;
?>
未確認なので動作保障は無し。
0751750
2005/04/15(金) 13:36:00ID:???<?php
if($Slog[2]){
$Slog[2] = htmlspecialchars($Slog[2]);
print <<<_HERE_
<tr id=log-10>
<td><font id=kei>{$Slog[2]}</font></td>
</tr>
_HERE_;
}
?>
0753nobodyさん
2005/04/15(金) 16:07:31ID:???しょうがないな
どうせ$Slog[2]に何も入ってないんだろ。
<?php
$Slog[2] = 'test';
if($Slog[2]){
$Slog[2] = htmlspecialchars($Slog[2]);
print <<<_HERE_
<tr id=log-10>
<td><font id=kei>{$Slog[2]}</font></td>
</tr>
_HERE_;
}
?>
0755nobodyさん
2005/04/15(金) 16:57:42ID:???0757755
2005/04/15(金) 17:14:31ID:???モバイルで現在の北緯と東経を求める関数教えてくれ
0759755
2005/04/15(金) 17:32:49ID:???0760nobodyさん
2005/04/15(金) 17:33:21ID:???fsockopen( )で位置情報を送ってくれるサーバに接続。もちろんただでは接続させてもらえない。
ゼンリンから電子地図と地図データベース買えば位置を地図で表示できるかもしれない。
0765nobodyさん
2005/04/16(土) 00:06:16ID:???こいつは見逃せないぜ…(゚Д゚)ゴクリ
■ このスレッドは過去ログ倉庫に格納されています