【PHP】くだらねぇ質問はここに書き込みやがれpart8
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2005/08/08(月) 01:18:55ID:54u1h4+Dここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
0857nobodyさん
2005/08/30(火) 02:46:17ID:???0858857
2005/08/30(火) 02:47:46ID:???0859nobodyさん
2005/08/30(火) 12:51:39ID:zspoZiNa【祝】コマンドラインから始めるPHP【プロ板進出】
http://pc8.2ch.net/test/read.cgi/tech/1124990165/l50
これならまあええが、
下のは何だ。厨は単発質問糞スレ立てるな。
phpでデリミタしたら配列内に改行
http://pc8.2ch.net/test/read.cgi/tech/1124583843/l50
phpについて教えてください!
http://pc8.2ch.net/test/read.cgi/tech/1125139051/l50
PHPでExcelのテンプレートに値を入れたい
http://pc8.2ch.net/test/read.cgi/tech/1125207985/l50
0860nobodyさん
2005/08/30(火) 13:52:59ID:???考えているのですが、ヘッダはどのように指定すればよろしいのでしょうか?
0861nobodyさん
2005/08/30(火) 15:45:20ID:???>853紹介のスクリプト(ttp://la.ma.la/misc/js/roma.html)を移植したぞ。
$roma["hiragana"]は ttp://la.ma.la/misc/js/roma.js を参考に2次元連想配列で作ってくれ。
$roma["hiragana"] = array("a" => "あ","i" => "い",.......); な風にして。
また今は関数外に出してるけど必要なら関数内に入れてくれ。
function roma2hiragana($text){
return roma2x($text,"hiragana");
}
roma2x()は次↓
0862861
2005/08/30(火) 15:46:09ID:???$skip = 0; $len = strlen($text);
global $roma; // $romaを関数内に入れるなら不要
for($i=0;$i<$len;$i++){
if ($skip > 0) { $skip--;
} else {
$temp = substr($text,$i,1);
if (ereg("[a-zA-Z.,-]",$temp)) { //[a-zA-Z.,-]
$loop = 4; $f=0;
while($loop){
$temp = substr($text,$i,$loop);
if (isset($roma[$to][$temp])){
$kana = $roma[$to][$temp];
if($loop == 2){
if($kana == "っ"){$i--;} //「っ」の場合、一文字戻す
$skip = 1;
}else{ $skip = $loop-1; }
$f=1;
$newarray[] = $kana;
break;
}
$loop--;
}
if(!$f){$newarray[] = $temp;} // $f == 0
} else {
$newarray[] = $temp;
}
}
}
return implode($newarray); // stringで返す
}
0864nobodyさん
2005/08/30(火) 21:18:35ID:???define( "TMP", <<<END );
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;
こういう使い方って無しでしょうか?
ちなみに上記だと実行時にエラーになります。
0865nobodyさん
2005/08/30(火) 21:30:21ID:???define('TMP', <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END);
echo TMP;
0866nobodyさん
2005/08/30(火) 21:35:01ID:???864じゃないけどエラーでるぞ。
>>864
これはダメ?
$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;
define("TMP", $var);
0867864
2005/08/30(火) 21:47:10ID:???今はその方法にしてます。
ただ、Perl使ってたときはできた書き方なので、
同じようにスマートにならないかなーと思った次第です。
0868866
2005/08/30(火) 22:05:48ID:???これだと出来た。
define('TMP',
$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
または、
define('TMP',
<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
でもPHPエディタだと両方とも色分けが変になるから微妙だったけど。
0869868
2005/08/30(火) 22:15:36ID:???ヒアドキュメントの終端マーク?(END)を単独で1行にすれば良さげ?
define('TMP',<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
0870nobodyさん
2005/08/30(火) 22:21:58ID:???0871nobodyさん
2005/08/30(火) 22:26:38ID:???$end=count($line)-1;
echo $line[$end]
最後の行をだす。
0872nobodyさん
2005/08/30(火) 23:20:26ID:eL6jzClK段落が認識されず、表示されてしまいます。
良い解決方法はないでしょうか?
0875nobodyさん
2005/08/30(火) 23:50:56ID:???whileで“00”〜“20”までを繰り返すとやりたいのですが、
$hage = "00";
while ($hage != "20") {
$hage++;
}
$hageの変数を2桁に固定するにはどうすれば良いのでしょうか。
0876875
2005/08/31(水) 00:05:59ID:???$page = "00";
while ($page != "20") {
$page = sprintf("%02d", $page);
$page++;
}
0877nobodyさん
2005/08/31(水) 00:08:42ID:???あの、それなら最初から
$page = 0;
while ($page != 20) { ... }
の方が良いですよ。
0878nobodyさん
2005/08/31(水) 00:15:28ID:???while ($page++ < 20) { ... }
0881nobodyさん
2005/08/31(水) 01:38:45ID:???その時に、要求アドレスによって、表示を分岐させたいと考えてるのですが、
要求アドレスがどうしても取得できません。
これは無理なのでしょうか。
0883881
2005/08/31(水) 02:33:16ID:???セッションを使った方法を考えてみましたが、分かりませんでした。
404を出すアドレスにアクセスした時点では、
何もアクションが起こせないので、セッションも登録できないと思うのですが、
具体的な方法を教えていただけないでしょうか。
0884nobodyさん
2005/08/31(水) 02:58:42ID:???要求アドレスって存在しなかったページって事ですよね?
$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えました。
環境:linux/apache2.0.54/PHP5.0.4
0885884
2005/08/31(水) 03:01:26ID:???0886nobodyさん
2005/08/31(水) 03:23:57ID:???「インクリメントした後の$pageが20未満」なのか
「インクリメントしたら20未満の$page」なのか
どっちの意味になるんだろ?
0887881
2005/08/31(水) 03:27:31ID:???要求アドレスは存在しなかったページを意味してます。
ですが、無理みたいですね・・・。
phpでは無理なんでしょうか。
0888nobodyさん
2005/08/31(水) 03:31:59ID:???0890886
2005/08/31(水) 03:36:04ID:???0891881
2005/08/31(水) 03:37:18ID:???.htaccessをどのように使えばいいのでしょうか。
今も.htaccessはありますが、ErrorDocumentの記述があるだけです。
0892884
2005/08/31(水) 03:44:16ID:???あれ?ダメですか?
存在しないページなら>884の通り、$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えましたよ。
print "REDIRECT_URL=[".$_SERVER[REDIRECT_URL]."]<br>\n";
print "REQUEST_URI=[".$_SERVER[REQUEST_URI]."]<br>\n";
で存在しないページ(例:http://192.168.0.111/test/ttt.html)が「/test/ttt.html」として取得できました。
SERVER_ADDRやHTTP_HOSTでIPアドレスも取得できるからURLも取得できますし。
ためしに404のエラードキュメントPHPで print_r($_SERVER); してみては?
その前に404のエラードキュメントをPHPで使えるようになっているのでしょうか?
0893881
2005/08/31(水) 03:51:02ID:???REDIRECT_URLは空文字で、
REQUEST_URIの方には404.htmlの方が入ってました。
マニュアルでREQUEST_URIの箇所を読む限りでは確かにこれで取得できそうですが…。
$_SERVERは、print_rで見ましたが、それらしき値はないです。
0894nobodyさん
2005/08/31(水) 03:56:32ID:???ttp://www.php.net/manual/ja/language.operators.increment.php
0895881
2005/08/31(水) 04:00:18ID:???ErrorDocumentの書き方がまずかったようです。
絶対パスを指定したのですが、これを相対パスにすることで直りました。
絶対パスだと、ページ自体のリダイレクトが行われてるんですかね。
丁寧に答えてくださった方、ありがとうございました。
0896nobodyさん
2005/08/31(水) 04:04:38ID:???自前サーバ? レンタルサーバ?
要求アドレスの取得に関係なくPHPファイルがエラードキュメントとして使えるようにしてますよね?
0898nobodyさん
2005/08/31(水) 09:11:56ID:eJmHKqbd$dy=mktime(0,0,0,date("m"),0,date("Y"));
echo date("Y-m-d",$dy);
0899nobodyさん
2005/08/31(水) 10:48:10ID:???0900nobodyさん
2005/08/31(水) 11:42:07ID:???echo date("Y-m-d")でいいじゃん。
0902nobodyさん
2005/08/31(水) 14:01:37ID:???0904nobodyさん
2005/08/31(水) 14:20:31ID:???今オークションを携帯で見れるようなものを作ってます。
まず題名のみを抽出して表示するところまではできました。
題名を押すとリンク先を表示するところで行き詰まってます。
一応できたのですが題名を押すとphp?no=1という所に行きまた詳細を抽出する方法です。
このno=1とうのを20個近く作らなければいけない無駄なやり方でした。
これをもっとスマートにしたいのですが良い方法が思い浮かびません。
何か良い方法があったら教えてほしいです。
説明へたですいません。
0907nobodyさん
2005/08/31(水) 15:05:27ID:???class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
unset($this->test);
}
}
こんな感じでいいのでしょうか。
0908nobodyさん
2005/08/31(水) 15:13:20ID:???俺も良く判らんけど、__destruct って、そのオブジェクトを解放するときに処理するんじゃないの。
メソッドもオブジェクトに含まれるので、unsetする必要はないかと。
class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
print_r $this->test;
}
}
$ob = new hoge(1,2);
unset($ob);
0909nobodyさん
2005/08/31(水) 15:18:41ID:???以前、DB接続クラスを作って、
デストラクタにDBをクローズするメソッドを呼び出すようにしたら、
まだクエリすら呼び出しても以内のに勝手に不要とみなされ、
勝手にDB切断されて困ったことがあった。
使い方がいまいち。オブジェクト解放のタイミングを調整できればいいのだが。
0910nobodyさん
2005/08/31(水) 15:20:51ID:???__autoload()関数が役に立ったことがあるという人、いますか?
もし、役にたったならば、どんなときに役に立ちましたか?
require呼び出しでは使えるものでしたか?
0911907
2005/08/31(水) 15:29:11ID:???あ〜なるほどね。
デストラクタってパフォーマンス向上のためにある関数なのかと思ってたんだけど、そうじゃないのか。
>>910
ん〜手間が省けて結構便利だと思うんだけどな。
0912nobodyさん
2005/08/31(水) 17:08:30ID:/SaEXI7Wセーフモード&SAFE_MODE_GIDがoffのレン鯖で
phpスクリプトが書き出したphpファイルにブラウザからアクセス
する技はありまつか?
0914nobodyさん
2005/08/31(水) 17:27:03ID:???0916nobodyさん
2005/08/31(水) 17:36:34ID:???0917nobodyさん
2005/08/31(水) 20:08:29ID:???0918nobodyさん
2005/08/31(水) 20:40:45ID:kcRQHeGxmktime(0,0,0,date("m"),0,date("Y")); # 8-31となって欲しいが7-31になる
「当月末日」の表現で使っていたんですが、これじゃ使えないね
ttp://php.s3.to/man/function.mktime.html
「指定した月の最後の日は次の月の -1 番目の日ではなく、"0" 番目の日として表すことが可能です。」
0919nobodyさん
2005/08/31(水) 20:47:45ID:???0920nobodyさん
2005/08/31(水) 20:50:45ID:???「2005年8月の0番目の日」が「2005年7月の最後の日」になる。
だからmktime(0,0,0,date("m"),0,date("Y"))は「先月末日」の表現にしかならない。
0921nobodyさん
2005/08/31(水) 21:02:22ID:kcRQHeGx勘違いしてたヨ。下記例にもちゃんとあったな。
$lastday = mktime (0,0,0,3,0,2000);
echo strftime ("Last day in Feb 2000 is: %d", $lastday);
0922nobodyさん
2005/08/31(水) 22:19:18ID:N4cNKOEk質問させて下さい
PHPを使ってweb上でメール受信できますか?
http://php.s3.to/net/#popでできてるみたいなんですけど、
内容を変数に扱いたいと思っています。
なにをしたいかというとYahoo!オークションのアラートで送られてくる
メールの画像を一括してみようと思っています。
そういうサイトがあれば一番いいんですけど
だれか作ってくれませんか?
0923nobodyさん
2005/08/31(水) 22:32:34ID:???他力本願というのだよ、それは。
無いなら、自分で調べて作ればいいじゃん。
0925nobodyさん
2005/09/01(木) 02:25:07ID:???DBにいれてかんりしたほうかいい?
0926nobodyさん
2005/09/01(木) 02:36:18ID:???投稿時にファイル名を自動で付すなら
ファイル名だけデータベースで持っておいて
画像は特定のフォルダに放り込むのが簡単。
良し悪しは何で判断する?
0927nobodyさん
2005/09/01(木) 08:14:05ID:eoQpZPGA0928nobodyさん
2005/09/01(木) 13:27:49ID:???<?=$contents?>
--edit.php--
class Edit{
function excute(){
global $contents;
$abc = 'abc';
}
}
$contents=<<<EOL
ほえほえ{$abc}
EOL;
--index.php--
include( 'edit.php' );
$obj = new Edit();
$obj->excute();
include( 'template.php' );
以上のスクリプトで、「ほえほえabc」という出力を得たかったのですが、
実際は「ほえほえ」になってしまいます。
function excuteのなかが著しく怪しいとは思うのですが、
マニュアルhttp://www.php.net/manual/ja/language.variables.scope.phpを
見ても解決の手掛かりが掴めません。。。
何かヒントを頂ければ幸いです。。。
調べたら「実行演算子」とやらで
`rm -Rf $del_dir`;
こう書くように書いてあったのですが、消えません。
実行演算子がシェルに命令を送るだけのものだとすれば、
win鯖の実験用環境では無理ということなのでしょうか。
0930nobodyさん
2005/09/01(木) 13:50:52ID:???0931nobodyさん
2005/09/01(木) 13:53:01ID:???スコープというものが分かってないな。
excuteの中$abcはそこで完結しており、そのままだと外には出られない。
えと、じゃあやっぱり両対応にするにはopendirとかreaddirを使って
ディレクトリ内のファイルやフォルダを全部調べつつ削除する
ルーチンを作るしかないのですね・・・
0933nobodyさん
2005/09/01(木) 15:02:38ID:???とりあえず、以下な感じで逃げました。
ああ、$contents<<<EOLを別の所におきたい。。。
別ファイルにしようかなぁ。。。
--template.php--
<?=$contents?>
--edit.php--
class Edit{
function excute(){
$abc = 'abc';
$contents=<<<EOL
ほえほえ{$abc}
EOL;
return $contents;
}
}
--index.php--
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
0935nobodyさん
2005/09/01(木) 15:59:31ID:???index.php
└■A
..├a.inc
..└■B
....└b.inc
index.phpを実行中にA/a.incをinculdeして、さらにB/b.incをinculdeするにはA/a.inc内の記述は
inculde("B/b.inc");
inculde("A/B/b.inc");
どちらが正しいんでしょう?
0937nobodyさん
2005/09/01(木) 16:38:03ID:???ワーキングディレクトリ(working directory)つー概念があって、
この場合 index.phpがあるディレクトリがそれに該当する。
includeやrequireで相対指定した場合はそこからの指定になる。
それぞれのファイル中で echo getcwd(); してみればどういう扱いをされるのか分かるよ。
0938nobodyさん
2005/09/01(木) 16:50:30ID:???文字(フォント)を画像として出力するなんてのは無いですよね?
0941938
2005/09/01(木) 17:07:13ID:???http://ponk.jp/php_gd/index.php?page=1
こことか見るとのってるね
0942nobodyさん
2005/09/01(木) 17:45:59ID:HGt94pY+PHPでファイルを読み込む関数(include require require_once)で絶対パスを使うと
サーバから見たパスになりますよねー。
/usr/ID/public_html/file/
ってな風に。
でも、サイト作ってる時はドメインからみたパスにしたいんですよ。
/file/
ってな風に。
これってどうにか対処法はありますか?
0943nobodyさん
2005/09/01(木) 17:55:33ID:???「リモートにディレクトリがあればそれを削除して、無ければ削除しない」
ということをやりたいのですが、ディレクトリがあるかどうかをチェックする関数が
ありませんでした。
あってもなくても削除するように、
$ftp->rm( 'tmp_dir', TRUE );
としましたが、ディレクトリが無い場合にエラーが発生してしまいます。
(当然といえば当然ですが…)
何かスマートな方法はありますでしょうか?
よろしくお願いします。
0944nobodyさん
2005/09/01(木) 18:26:58ID:???実行時にライブラリのパス変更して、相対パスを使う。
さすがに /file/ は無理だけど、./file/ ならできるのでは。
0945943
2005/09/01(木) 19:25:27ID:???$ftp->ls( 'tmp_dir' );
の結果が空であれば存在しないという判断で対応できました。
お騒がせしました・・・
0946nobodyさん
2005/09/01(木) 19:52:13ID:???色々例題等試してみて、機能的なことはだいぶ解ったのですが、
フォームで複数の入力画面を行き来する可能性があるようなものの場合、
そこに出てくるセッションで保持したい変数(例:$_POST['hoge'])すべてを
例1
if(isset($_POST['hoge1'])){$_SESSION['hoge1'] = $_POST['hoge1'];}
if(isset($_POST['hoge2'])){$_SESSION['hoge2'] = $_POST['hoge2'];}
if(isset($_POST['hoge3'])){$_SESSION['hoge3'] = $_POST['hoge3'];}
続く・・・・
ってセッションに入れないといけないのでしょうか?
if(isset($_POST)){$_SESSION = $_POST;}
じゃ、なんだかうまく逝かなかったです。配列を配列に入れちゃうから無理なのかな?
あと、スクリプトのなかでhtmlに埋め込むときは、セッション変数をどういう風に扱えばよいでしょうか?
自分は{$_POST['nantoka']}って感じで使ってるので、上記「例1」のあとで
if(!isset($_POST['hoge1'])){$_POST['hoge1'] = $_SESSION['hoge1'];}
if(!isset($_POST['hoge2'])){$_POST['hoge2'] = $_SESSION['hoge2'];}
if(!isset($_POST['hoge3'])){$_POST['hoge3'] = $_SESSION['hoge3'];}
続く・・・・
とこれまた面倒なことをしてるんですが。
$_SESSION['hoge1']とか$_POST['hoge1']はそのまま使わずに$hoge1などのような変数に代入した方がいいのでしょうか?
常識的にどうするかって部分が記述されてるサイトを見つけられずちょっと悩んでます。
アドバイスおながいします。
0948nobodyさん
2005/09/01(木) 21:30:30ID:???あるregexのmanページを参照ください。 このページはmanpageフォーマットであり、
読むには man /usr/local/src/regex/regex.7のようにします。
http://jp.php.net/manual/ja/ref.regex.php
とありますが、どうやれば読めるのかわかりません。
regex.7の日本語訳などネット上にありませんか?
0949nobodyさん
2005/09/01(木) 21:46:46ID:???ttp://www.linux.or.jp/JM/html/LDP_man-pages/man7/regex.7.html
0952nobodyさん
2005/09/01(木) 22:40:12ID:???0953nobodyさん
2005/09/01(木) 22:40:49ID:???こんな感じでしょうか?
これだと、{$abc}は置き換えられず、「ほえほえ」だけになってしまうのです。
必ず、<<<EOLの前に$abcを定義しないと逝けないんですよね。
やりたいのは、templateを定義しておいて、excute()でデータを生成して、
templateに埋め込んで、出力する、これだけなんですけどねぇ。。。
やっぱり、別ファイルにしてincludeかなぁ。。。
テンプレートファイルを沢山作りたく無いんだよなぁ。。。
-- template.php --
<?=$contents?>
-- edit.php --
class Edit{
var $template;
function Edit(){
$this->template = <<<EOL
ほえほえ{$abc}
EOL;
}
function excute(){
$abc = 'abc';
return $this->template;
}
}
-- index.php --
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
0954nobodyさん
2005/09/01(木) 22:49:41ID:???>>934じゃないけど、ちげーよ!思わずつっこんじゃうよ!
class Edit{
function Edit(){
return $this->execute();
}
function excute(){
return $abc = 'abc';
}
}
-- index.php --
include( 'edit.php' );
$contents = new Edit();
include( 'template.php' );
レス数が950を超えています。1000を超えると書き込みができなくなります。