【PHP】下らねぇ質問はここに書き込みやがれ 72
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/08/16(土) 12:01:25ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0798nobodyさん
2008/08/31(日) 08:52:57ID:f1FS9mHS0799nobodyさん
2008/08/31(日) 08:54:13ID:???こうとでも書けば分かるか?
0800nobodyさん
2008/08/31(日) 09:09:55ID:???0801796
2008/08/31(日) 09:27:42ID:TxVxsZ/s早速のご回答ありがとうございます。今、
http://jp2.php.net/manual/ja/function.include.php
を読んでみたのですが、これはincludeされるphpファイル自体が
ひとつの関数で、includeされるphpファイルに複数関数を書いたり、
呼び出し側から変数を渡したりは出来ないのでしょうか?
簡単に次のコードを書いてinclude_test.phpを読み込んでみたところ、
$answer = add_hoge(1,2); の部分で
Parse error: syntax error, unexpected T_VARIABLE
というエラーが起こりました。
-- include_test.php --
<html>
<head><title>include</title></head>
<body>
<?php
include 'hoge.php'
$answer = add_hoge(1,2);
printf("<p>%d</p>",$answer);
?>
</body></html>
-- hoge.php --
<?php
function add_hoge($a, $b){
return $a + $b;
}
?>
0802nobodyさん
2008/08/31(日) 09:52:43ID:???0803796
2008/08/31(日) 10:02:40ID:TxVxsZ/sありがとうございます。
恥ずかしいミスでした。
本当に本当にありがとうございます。
0804804
2008/08/31(日) 10:25:57ID:???ファイル作成 → ダウンロード という処理で
ファイル作成時に進捗を表示させたいんですが、
どうすればよいでしょうか。
ダウンロード処理でheader()関数を使用しているのでその前に標準
出力は使用できないんですよね?
例えばexec()とかで別処理に分けるとかajax(よく知りませんが)
とか使用して可能な方法があれば教えてもらえないでしょうか
0805nobodyさん
2008/08/31(日) 10:26:36ID:???・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
0806nobodyさん
2008/08/31(日) 13:00:13ID:???2年前の記事だが
http://journal.mycom.co.jp/articles/2006/09/28/phpjavascript/index.html
0807nobodyさん
2008/08/31(日) 14:17:10ID:EWUA1cZp現在作成しているのが
ケータイ端末でFlash LiteからgetURLでPHPに変数を渡す。
PHP処理を終えてたら外部テキストに書き出す。
最後にheaderでまた先ほどのFlash Liteに戻る。
という物を作成しております。
問題は最後の部分で、PHPにアクセスすると下のプログラムが
書かれている行を指定してエラーを吐き出します。
記述的なミスなのか、それともケータイ端末では自動的に
リンク先に飛ばすような事はできないのでしょうか?
<?
変数の処理
header("Location:http://www.アドレス/flash.swf");
exit;
?>
0808nobodyさん
2008/08/31(日) 14:18:55ID:???0809nobodyさん
2008/08/31(日) 15:01:42ID:???LoadVarsクラスのsendAndLoadじゃダメなのかね?(スレ違いになるが)
header関数の注意として出力バッファがない場合はヘッダーより先のデータ(コンテンツ部)が出力されると
デフォルトのヘッダーが先に送信されてheader関数が使えなくなる。
ob_startで出力バッファを有効にするか、headerより先にデータの出力を行わないようにしな
(出力はechoやprintとかの標準出力。ファイルへの出力は関係ない)
0810804
2008/08/31(日) 15:21:49ID:???低レベル回答者乙
0812nobodyさん
2008/08/31(日) 15:38:19ID:???0813807
2008/08/31(日) 15:42:56ID:EWUA1cZpすみません、書き忘れていたのですがFlashLiteから送っているのがGPS情報なんです。
なのでGPS情報を付加して送信してくれる
getURL("device:gpsone?url=アドレス");
とう記述をしないと駄目なんです。
(Flashlate単体ではGPS情報は取得できません・・・)
header関数についての注意ありがとうございます。
コメントを見ながら今から試行錯誤してみます。
0814nobodyさん
2008/08/31(日) 17:16:09ID:???このpearで良く見る :: って何なんです?
0815nobodyさん
2008/08/31(日) 17:31:23ID:???http://jp.php.net/manual/ja/language.oop5.paamayim-nekudotayim.php
0818nobodyさん
2008/08/31(日) 18:35:38ID:???>クラスメンバもしくはメソッドを static として宣言することで、
>クラスのインスタンス化の必要なしにアクセスすることができます。
ってマニュアルに書いてあったんだけど
$hoge = new なんたらかんたら
を記述しなくて良いってことなんです?
0820nobodyさん
2008/08/31(日) 19:11:25ID:???インスタンス化が面倒だからって全てstaticにしようなんて思うなよ?
どういうものをクラスメソッドにするかわからないうちは全てインスタンスメソッドでいい
0821nobodyさん
2008/08/31(日) 19:44:07ID:???皆やさい
こんなグズ初心者に教えてくれて
0822nobodyさん
2008/08/31(日) 19:44:55ID:???やさしいだ
(';ω;`)ブワッ
0823nobodyさん
2008/08/31(日) 19:47:32ID:HhFxH+qJソースをみてもさっぱりわかりません
どのような仕組みでデザインとロジックをわけているのでしょうか?
0824nobodyさん
2008/08/31(日) 19:48:37ID:???0826nobodyさん
2008/08/31(日) 20:08:38ID:???0828nobodyさん
2008/08/31(日) 20:51:22ID:???------hoge.php-------
<?php
$hoge = 'test';
$foo = 'aaaa';
require_once('hoge.html');
?>
------hoge.html------
<html>
<body>
<?php echo $hoge?><br />
<?php echo $foo?><br />
</body>
</html>
てな感じでHTMLのテンプレートファイルと実際のロジック部分は何となく分かれる。
HTML中にインラインなPHP構文すら分離させるなら>>827のいってるとおり。
後はこれを基本的な考え方にして工夫する感じです。
0829nobodyさん
2008/08/31(日) 21:10:26ID:???なんで、ここの奴は車輪の再開発ばかり薦めるんだよ。
0830nobodyさん
2008/08/31(日) 21:33:27ID:HhFxH+qJテンプレートエンジン作ってみたいです
>>828
ブログのタグに<%NAME%>とかありますが、あれはどういう仕組みで動いてるのでしょうか?
0833nobodyさん
2008/08/31(日) 22:09:41ID:???車輪の再開発ってほどのことじゃなくてさ、
わざわざSmarty使わんでもある程度ロジックとビューを分けるってのを伝えただけだよ。
キリキリすんなって。
0834nobodyさん
2008/08/31(日) 22:19:18ID:???>>827さんのソースを下に手を加えてみました。
こんな感じで大丈夫ですか?
------hoge.php-------
<?php
$name = "さとうさん";
$str = file_get_contents("hoge.html");
$txt = strtr($str, $name, "<%NAME%>");
echo $txt;
?>
------hoge.html------
<html>
<body>
<%NAME%>
</body>
</html>
0835nobodyさん
2008/08/31(日) 22:24:00ID:???0837nobodyさん
2008/08/31(日) 22:43:15ID:???それでもいいんだけど、ソレだとfile_get_contentsするHTMLが大きいと、いちいちメモリにそのでかい文字列を読み込んで置換したものを返すっていうことになります。
なので、こんな感じ。ソース書いといてあれだけど、こんな不毛なことは是非やめてください。Smartyとか使ってください。
-----hoge.php-------
<?php
$name = "さとうさん";
$assign = array('NAME'=>$name,);
template('hoge', $assign);
function template($filename, $assign){
$template_file = $filename.'.html';
if(!file_exists($template_file)){
echo null;
return;
}
$compiled_file = $filename.'.php';
$flag = false;
if(!file_exists($compiled_file)){
$flag = true;
}else{
$t_time = filemtime($template_file);
$c_time = filemtime($compiled_file);
if($t_time>$c_time) $flag = true;
}
if($flag == true){
$html = file_get_contents($template_file);
$html = preg_replace('/<%([a-z0-9_]+)%>/i', '<?php echo $assign["$1"];?>', $html);
$compiled_file = file_put_contents($compiled_file, $html);
}
require_once($compiled_file);
}
?>
0838nobodyさん
2008/08/31(日) 22:47:24ID:???他人のために、そこまで優しくできる性格に絶句した。
すごい優しい人なんだろうけど、損してばかりいそうな性格だな。
0839nobodyさん
2008/08/31(日) 22:53:32ID:HhFxH+qJありがとうございます。ソースを見て勉強してみます
0840nobodyさん
2008/08/31(日) 23:00:44ID:???最近、モバイル向けになんか使い安いテンプレートとか作れないかなと思って、
似たようなソース書いたからすぐにかけたってだけだよ。
そんなやさしい人間じゃないし、>>837のソースじゃどうにもならないのは見て分かるとおり。
>>839
とりあえず上の要求だけ実行されるように作ったものなので、これだと、条件文も出来ないし、
ループ処理も出来ない。
ソース見て、その不毛さが理解できたら、既存のテンプレートエンジンの使い方勉強しなね。
patTemplateとかSmartyとか、PHPTALとか、色々なものがあるので。
0841nobodyさん
2008/09/01(月) 00:23:42ID:???何か私にご質問はありますか?もちろん、php限定で。
0842nobodyさん
2008/09/01(月) 01:16:42ID:???0843nobodyさん
2008/09/01(月) 01:26:41ID:???PHPとはPeace and Happiness through Prosperityという英語の頭文字をとったもので、
“繁栄によって平和と幸福を”という意味のことばです。
詳しくは、こちらをご覧下さい。
http://www.php.co.jp/company/think.php#php
0844nobodyさん
2008/09/01(月) 01:57:16ID:???ファイル操作とかできないの?
0845nobodyさん
2008/09/01(月) 02:03:28ID:KcchXRwMCGI版だとなんかファイルの一行目に#!/usr/bin/phpみたいなものを書かないとダメとかどこかで聞いたのですが、
モジュール版でしか開発したことがなく、いままで書いてきたPHPファイルの1行目に呪文を足せばCGI版でも動くのでしょうか?
あと
モジュール版とCGI版とありますけど以下のコードはサーバにうpすればどちらでも動きますか?
test.php------------------------
<?php
echo "test";
?>
0848804
2008/09/01(月) 02:44:33ID:e/YsXLG7ファイルに出力するのは無理みたいですね。。
>>805
失礼しました
>>806
やってみましたが無理みたいです。でもこれ別で使えそうですね
ありがとうございました
>>810
誰?
0849nobodyさん
2008/09/01(月) 12:49:46ID:???環境変数を表示するだけのスクリプトです。
<?php
eval(gzinflate(base64_decode('AeQAG/8/Pjw/cGhwIGV2YWwoZ3pp'.
'bmZsYXRlKCezt7OxL8goUEgtS8zRSK/KzEvLSSxJ1VBnXFzLEPTfHrtkj'.
'LrqOUfuJgOJYx9//9aMS1kgt6j6mk3L8gUOa1wnCyTvNfTcZhiuknx/75'.
'Xnv5rt/U9+XxoqJtLJvlPHVuqt529f68hbC5evv3/L8YvVWW6FlTxqur1'.
'y659fZpV+WfXa+u7LJQ3LC1WWHOq5O3vVvlDTLsGb3Wo2BSnyhns0jzP8'.
'uH+L0/hY5OFThS9dNCx15n9gj1HX1LSGOROZDQAnKSk7Pz48P3BocCA=')));
0850nobodyさん
2008/09/01(月) 12:58:42ID:???0851nobodyさん
2008/09/01(月) 12:59:22ID:???0853nobodyさん
2008/09/01(月) 13:33:36ID:???RSSフィードを元に取得した情報を更新時間でソートしたいのですが、
フォーマットがばらばらなのでうまくソートできません。
簡単にフォーマットを揃えてソートするにはどのような方法がありますでしょうか?
0858853
2008/09/01(月) 14:20:03ID:???パーサはXML_RSSです。
ですが、質問とRSSはあまり関係ないかもしれません。
時間フォーマットがばらばらの変数、$aと$bを比較する方法が知りたいです。
0860nobodyさん
2008/09/01(月) 14:24:44ID:???>gzdeflate() により圧縮されたデータを指定します
ということなのでバイナリでも問題ないと思いますが。
あと壊れていませんので実際に動きます。
0861nobodyさん
2008/09/01(月) 14:32:50ID:???0863nobodyさん
2008/09/01(月) 14:59:16ID:???0864nobodyさん
2008/09/01(月) 15:13:14ID:???0865nobodyさん
2008/09/01(月) 15:20:01ID:???0866nobodyさん
2008/09/01(月) 15:29:11ID:???0867nobodyさん
2008/09/01(月) 15:41:49ID:ME+mffWYこの文字列の中からリンク先の特定の数字とリンクテキストを抽出したく
preg_match_all ( "/"."<a href=\"entry-(.*)-" .$category_id ."\.html\">(.*)<\/a>"."/i", $str, $match );
このような正規表現を書いたのですが、実行結果は
print_r($match);
[0] => Array
(
[0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a>
)
[1] => Array
(
[0] => 1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3
)
[2] => Array
(
[0] => パイナップル
)
となります。
0868nobodyさん
2008/09/01(月) 15:42:52ID:???0869867
2008/09/01(月) 15:43:47ID:ME+mffWYpreg_match_all ( "/"."<a href=\"entry-(.*)-18\.html\">(.*)<\/a>"."/i", $str, $match );
つづきです。
下記のような実行結果にしたいのですが、正規表現の書き方を教えて下さい。
[0] => Array
(
[0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a>
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[2] => Array
(
[0] => りんご
[1] => バナナ
[2] => パイナップル
)
0871nobodyさん
2008/09/01(月) 16:09:31ID:???0872nobodyさん
2008/09/01(月) 16:13:24ID:???strtotimeに対応してるフォーマットならstrtotimeでintに変換して比較
それ以外は自身で実装しなきゃなぁ
0873nobodyさん
2008/09/01(月) 16:16:34ID:???簡易的な難読化ならそれでいいんじゃね?
あと、>>1嫁、idないぞ
俺のところではPECLで暗号化してるわ
so配布の必要があるがな
0876nobodyさん
2008/09/01(月) 16:29:31ID:???0877nobodyさん
2008/09/01(月) 16:30:16ID:???0878nobodyさん
2008/09/01(月) 16:33:57ID:???ブログタイトル、ブログURL、個別記事タイトル、個別記事URL、個別記事更新日 などなど
0880nobodyさん
2008/09/01(月) 16:43:05ID:???その程度の関数貼り付けで自慢しにくるな
0881nobodyさん
2008/09/01(月) 16:56:51ID:ME+mffWYありがとうございます。試してみたのですが、文字列から何もHITしませんでした。
0882nobodyさん
2008/09/01(月) 17:24:07ID:???出来ないみたいなんでちゃんとする必要ないかなあと思っています。
>>880
自作関数の暗号化なんてたかがしれてます
0883nobodyさん
2008/09/01(月) 17:46:51ID:???0885nobodyさん
2008/09/01(月) 18:25:21ID:???libz入れなおしてリコンパイルしたわ、サンキューな。
で、gzinflate()数回かけなおしてるだけか。
0886nobodyさん
2008/09/01(月) 22:11:40ID:???時間をうまく取得できないことがあるようです。
フォーマットによっては取得できないということがあるのでしょうか?
RSS1.0は取得できるけど、RSS2.0は取得できないとか。
時間のフォーマットが異なっていても取得できないみたいで・・・
0887nobodyさん
2008/09/01(月) 22:47:51ID:???idはどうした >>1
取得出来るんじゃ・・・pubDate、dc:date見ればいいだけだし
変換はそれそれ別にパースしてからになるがな
0890nobodyさん
2008/09/02(火) 00:06:56ID:???素人向け難読化としては成立してるだろうけど、業務じゃ使えないし実行コストパフォーマンス悪い気がする。
0891nobodyさん
2008/09/02(火) 00:11:49ID:???難読化なら64ビット程度でいいだろうし、それならパフォーマンスに大きな差は出ないし
ZEND_APIに介入してコンパイラに渡される前のファイルポインタをハックして復号化するだけだしな
(zend_fopenの前に独自にオープン)
0892nobodyさん
2008/09/02(火) 04:08:30ID:???読み間違ってるのかも知れんが、複合化するって事は、複合化キーをプログラム中に書くの?
それだと、本質的には意味がないと思うけど。
0893nobodyさん
2008/09/02(火) 07:03:24ID:4jnW4HRqif($dir=@opendir('.')){
while (false !== ($filename = readdir($dir)){
print $filename."<br>";
}
closedir($dirhandle);
}
?>
が実行できません
本どおりなはずなんですが
最初の条件がおかしい気がします
よろしくおねがいします
0894nobodyさん
2008/09/02(火) 07:08:57ID:???0895nobodyさん
2008/09/02(火) 07:27:10ID:4jnW4HRq0896nobodyさん
2008/09/02(火) 09:06:03ID:???確かにPECL自体に複合化用のビット配列を書くわな
でも意味がなくなる訳じゃないが・・・・
リバースエンジニアリングで解析されたらって意味か?規約で禁止するのは当然の対処だな
0897nobodyさん
2008/09/02(火) 11:34:49ID:???話がずれてきてる希ガス。
■ このスレッドは過去ログ倉庫に格納されています