くだすれPHP(超初心者用)4
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2008/06/13(金) 20:32:36ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0867nobodyさん
2008/11/17(月) 12:40:07ID:KhW4/uRqありがとうございます
判定はbcdivを使う事で判定する事が出来るようになりました
0868nobodyさん
2008/11/17(月) 12:48:40ID:???Windows以外で任意精度数学関数を使う場合は
--enable-bcmathつけてコンパイルしてある必要があるので気をつけて
0869nobodyさん
2008/11/17(月) 12:57:48ID:???0870nobodyさん
2008/11/17(月) 15:08:00ID:???floor((0.1+0.7)*10);
の例にしても、echo 0,1+0.7なら0.8と表示されるよ。
0871nobodyさん
2008/11/17(月) 15:11:02ID:???0872nobodyさん
2008/11/17(月) 15:48:18ID:???0873sage
2008/11/17(月) 16:44:22ID:fS1MxP+5XAMPPのDBにアクセスしてるPHPを読んでてわからなかった事があるのですが、
PHPのはじめの所が「<?」や「<?php」ではなく、
「<?=」となっていて、
<?=$TEXT?>
という感じで変数を表示してたところがありました。
これはechoと何が違うのでしょうか?
これの様に左辺が無い場合はどういう動作になるのでしょうか・・・
よろしくお願いします。
0874nobodyさん
2008/11/17(月) 16:54:17ID:???http://jp.php.net/echo
echo() には、開始タグの直後に等号を付ける短縮構文もあります。 この短縮構文は、設定オプションshort_open_tag が有効な場合のみ使用可能です。
0876nobodyさん
2008/11/17(月) 19:55:05ID:G7bu0AqYコノスレイイ。
ロムってたけど。
\(^o^)/イイ。
0877nobodyさん
2008/11/17(月) 19:55:43ID:???0878nobodyさん
2008/11/18(火) 08:21:36ID:???<?php
$word = '漢字';
$word = mb_convert_encoding($word, "UTF-8");
$page =$word.'.html';
$str = mb_convert_encoding($page, "UTF-8");
$fp = fopen($str,"w");
?>
0879nobodyさん
2008/11/18(火) 08:31:36ID:???0881nobodyさん
2008/11/18(火) 08:50:08ID:???0882nobodyさん
2008/11/18(火) 08:54:43ID:???$str = mb_convert_encoding($page,"UTF-8","auto");
autoでもSJISでもできないんです。
0883nobodyさん
2008/11/18(火) 09:04:13ID:???php.iniの設定とソースの文字コード、ブラウザの文字コードによっても変わる
detectもしつつ色々試行錯誤してみ
0885nobodyさん
2008/11/18(火) 09:08:54ID:???<?php
$word = '漢字';
$word = mb_convert_encoding($word,"UTF-8","SJIS");
$page =$word.'.html';
$str = mb_convert_encoding($page,"UTF-8","SJIS");
echo mb_detect_encoding($str);
print '<BR>';
echo mb_detect_encoding($page);
print '<BR>';
echo mb_detect_encoding($word);
$fp = fopen($str,"w");
?>
結果は
UTF-8
UTF-8
UTF-8
なんですが。
0889nobodyさん
2008/11/18(火) 09:44:19ID:???環境は?OSとか
0891nobodyさん
2008/11/18(火) 10:06:07ID:???使わない方がいいな
0892nobodyさん
2008/11/18(火) 12:40:23ID:???0895nobodyさん
2008/11/18(火) 13:13:57ID:???0896nobodyさん
2008/11/18(火) 14:27:45ID:VeQnY2gNを作ってます。チェックを入れるとsession_set_cookie_paramsを
1年に設定してるんですが一度ブラウザを閉じるとセッションも切れてしまいます・・・
下に簡単なソースを載せますので
すいませんがアドバイスよろしくお願いします。
login1.php
<?
session_set_cookie_params(365*24*3600);
session_start();
$_SESSION["name"] = "こんにちは";
echo "セット";
echo "<a href=\"login2.php\">移動</a>";
?>
login2.php
<?
session_start();
echo $_SESSION["name"];
?>
0897nobodyさん
2008/11/18(火) 16:17:38ID:???firefox?
0898896
2008/11/18(火) 16:33:43ID:???返答ありがとうございます。
環境はIE7、Firefoxです。
最初にlogin1.phpにアクセスし
セッションを設定して移動をクリックすると
login2.php にもセッションが引き継がれるんですが
その後ブラウザを閉じ次にlogin2.phpにダイレクトにアクセスすると
$_SESSION["name"] = "こんにちは";が表示されず
真っ白になります・・・
0899nobodyさん
2008/11/18(火) 17:09:56ID:???クッキーの有効期限はsetcookieで設定した方がいいぜ
session_startする前に実は開始してて、有効期限の上書きが出来ないことがあるから
0900nobodyさん
2008/11/18(火) 17:36:13ID:s+xeZpDT変数$strをintにキャストしたいのです。
ご教授お願いします。
$str = "ST012300";
$str = (int)$str;
$num = 100;
$num += $str;
echo $num; ←ここで出力
0901nobodyさん
2008/11/18(火) 17:57:13ID:???0902nobodyさん
2008/11/18(火) 18:34:52ID:???適当に書いたがこんな感じか?
function toInt($string) {
$temp = "";
for ($i = 0; $i < strlen($string); $i++) {
if (preg_match("/[0-9]/", $string[$i])) {
$temp .= $string[$i];
}
}
return (int)$temp;
}
0904nobodyさん
2008/11/18(火) 18:53:16ID:???1文字ずつ分解するのが無難なやり方でないかと
preg_match_allが俺の環境じゃ使えないから使わなかっただけというのもあるけど
preg_matchだけでくり抜ける?
例に出てるST012300なら簡単だけど
o89WE342hEU44とか2バイト文字が入ってきたりすると
俺のレベルじゃ1回の正規表現で抜き取れない
0905896
2008/11/18(火) 18:54:44ID:???session_startする前に開始している時もあるんですね。
アドバイスいただいたやり方で一度やってみます。
ありがとうございました!
0906nobodyさん
2008/11/18(火) 18:54:48ID:???飛び飛びの数字くっつけて1つの数字にすることに意味があるのか?
0907nobodyさん
2008/11/18(火) 18:56:46ID:???あと引数に配列渡された場合どうすんのとか
0908nobodyさん
2008/11/18(火) 19:15:25ID:???is_numericでもいいけどpreg_matchでもいいじゃん
>>903の突っ込みはpreg_match使うなら1回で抜けってことではないの?
その方法が思いつかなかったから聞いてるんだけども
>あと引数に配列渡された場合どうすんのとか
それは配列用のを別に作るべきでしょ
PHPじゃオーバロードできないけど
0909nobodyさん
2008/11/18(火) 19:20:22ID:???0910nobodyさん
2008/11/18(火) 19:26:49ID:???逆に言うと正規表現がわからないと混乱するだけ。
0911nobodyさん
2008/11/18(火) 19:34:38ID:???普段よく使うから使っただけだよ
is_numericなんて使ったことなかったし
まぁ気になったんで
>>902で書いた関数で文字列に適当なwebサイトをfile_get_contentsしたものを使って
is_numericとpreg_matchの比較ベンチとってみたけど
is_numericのほうが早いね
速度面では特に利点はないみたいだ
ただ>>910もいってる通りうまく使える人なら1行でスッキリと1回で抜けると思う
オーダなんかは1文字ずつ比較するのとたぶん変わらないと思うけど
0912nobodyさん
2008/11/18(火) 20:47:26ID:???という前提があるなら、漏れなら、
ereg( '(\d+)', $str, $regs );
echo $regs[1];
と書く。
0913nobodyさん
2008/11/18(火) 20:52:15ID:???文頭がアルファベットか?文字数が8文字か?数字が0〜3までか?
数値が連続してるなんて前提ねーよw
0915nobodyさん
2008/11/18(火) 20:56:46ID:???0916nobodyさん
2008/11/18(火) 20:57:31ID:???0917nobodyさん
2008/11/18(火) 21:48:50ID:/cO8JIvuPHPからDB2に接続するにはどうしたらいんですか?
MySQLからDB2に移行したいんです!何か特別な設定とかいります?
カタログ接続とかの意味がよく分からないです^^;
0918nobodyさん
2008/11/18(火) 21:57:01ID:???0922nobodyさん
2008/11/18(火) 23:49:32ID:???$file ='test.html';
$fp = fopen($file,"w");
$str = array('aaa\n','bbb\n');
file_put_contents($file, $str );
fclose($fp);
?>
複数行の書き込みをしたいのですが、これだとできません。
教えて下さい。
0923nobodyさん
2008/11/18(火) 23:51:48ID:???0924nobodyさん
2008/11/18(火) 23:54:15ID:???0926nobodyさん
2008/11/19(水) 01:53:56ID:???$pass1 = $_POST["pass"];
if($pass1=="●●"){
$sql = "delete from object where id = $id";
mysql_query($sql);
echo "削除されました";
exit;
}
●●の部分をMySQLに格納しているパスワードに
したい場合はどうすればいいのでしょうか?
MySQL側の質問になってしまうかもしれませんがお願いします。
0927nobodyさん
2008/11/19(水) 02:16:00ID:???"のエスケープをせずに済む方法ってありますか?
大量のhtmlタグをprintするのが大変なのでそのような関数があれば
教えていただきたいです。
0929nobodyさん
2008/11/19(水) 02:22:59ID:???0933nobodyさん
2008/11/19(水) 09:43:10ID:???ご存じなかたがいらっしゃったら教えていただけると幸いです
自作のスクリプトをばらまこうと思ってるのですが
ファイル構成やパーミッションまわりが複雑だったりするので
インストールウィザードをつけたいと考えてます
自己解凍形式みたいに
フォルダやパーミッションや簡単な設定項目(置換)を指定すると
そのとおりに設定して展開してくれるようなスクリプトはありますでしょうか?
なければ作ろうかと思うのですが
需要ありますでしょうか?
一通り探したつもりですが見つかりませんでした
よろしくお願いします
0934nobodyさん
2008/11/19(水) 10:15:16ID:???パーミッションってことはOSX含めたUnix系OSだよね?
RPMパッケージでも作ればいいんじゃない?
というか展開したファイルのパーミッションを変えるスクリプト1つ置くだけでいいのでは?
複雑な設定項目とかはインストール後に管理スクリプトからやればいいだけだし
そもそもサーバでそんなもの展開してインストールするようなのは自鯖か専鯖持ちぐらいでしょ
ターゲットの範囲が狭すぎてそのためにわざわざ凝った作り考えるのもあほくさいわ
0935933
2008/11/19(水) 10:58:08ID:???レスありがとうございます
移動中の携帯からの投稿だったため情報が足りませんでした
ここでいうスクリプトはPHPのスクリプトで
ターゲットはLinux+レン鯖を考えています
処理の流れ的には
1.自己解凍PHPにWEB経由でアクセス
2.DIRパスやそのスクリプトの起動に最低限必要な定数を設定
3.指定DIRに展開
4.自分自身を削除(オプション)+そのスクリプトの設定画面へリダイレクト(あれば)
単一ファイルにまとめたかったのは
・配布しやすそう?
・WEB公開DIRに必要ないファイル(incとか)を置きたくない
(必要ないファイルの置き場所は自由なため、公開DIRからの相対パス指定は難しい)
確かにインストールスクリプトを一個用意しておけばいい気もしますね・・・
0936nobodyさん
2008/11/19(水) 13:10:11ID:???作ったあとに需要あれば使って下さいの方がいいと思うよ。
ぞれより自己解凍PHPってのがなんなのか気になる
0937nobodyさん
2008/11/19(水) 13:22:48ID:???if($msg)ってやったらfalseでした。
それとも$msgってなまえの変数は有っても中身がない場合はfalse?
0938nobodyさん
2008/11/19(水) 13:27:45ID:???0939933
2008/11/19(水) 14:03:57ID:???確かに
作ってみます
ありがとうございます
自己解凍PHPとか言ってますが
単純に自身のPHPにファイルやらディレクトリ構成を埋め込んでるだけです
アクセスすると入力域が現れて・・・てな感じです
0940nobodyさん
2008/11/19(水) 14:29:26ID:???> アクセスすると入力域が現れて・・・てな感じです
それが気になる。ウェブ上からインストールできるってこと?
0941nobodyさん
2008/11/19(水) 14:53:34ID:???なんで初心者なのに用語を自作するのか
0942nobodyさん
2008/11/19(水) 15:21:15ID:???以外の物を調べるにはどうしたらいいですか?
具体的にはJIS補助漢字・第三・第四水準漢字や台湾、中国語などには
エラーと表示させたいです。
0943nobodyさん
2008/11/19(水) 15:29:40ID:???ttp://euc.jp/i18n/charcode.ja.html
どの文字コードを使うかによって変わると思うけど
こういったとこで範囲しらべて正規表現でチェックするといいかも?
ここも参考
ttp://www.phppro.jp/phptips/archives/vol9/1
0945933
2008/11/19(水) 16:07:24ID:???はい、そのとおりです
適当な公開ディレクトリにファイルを一個ぽいっとおいて
アクセスしてWEB上でパスの設定などをしてsubmitすると
設定に基づいて展開したりシンボリックリンクを作ったり文字コード変えたり設定情報を書き込んだりします
>>941
申し訳ない
PHPで自己解凍みたいのできたらいいなイメージから思いついたので・・・
今動いているのは圧縮してないですが、あとでgzipをかけたいと考えています
低機能なインストールスクリプトと思ってください
最低限の設定を行ってさらに設定が必要なら(データベース作るとか)それぞれの設定WEBにリダイレクトします
既存のインストールスクリプトと違うところは
・ファイルひとつだけでOK
・複数台のサーバ配布に対応(scpばらまき)・・・予定(作成中)
結局のところ展開してアップすればええやんって気もしてきましたorz
0946933
2008/11/19(水) 16:29:07ID:???ちょっと機能は違いますがコンセプトは似ているような気がします
ttp://labs.cybozu.co.jp/blog/kazuho/archives/2008/11/post_3.php
0948nobodyさん
2008/11/20(木) 03:17:06ID:???mb_convert_encodingを使う方法ってありますか?
0949nobodyさん
2008/11/20(木) 03:17:23ID:???0951nobodyさん
2008/11/20(木) 04:28:16ID:???取得したいのですが、
time()は引数がないのでどうしたらいいですか?
0952nobodyさん
2008/11/20(木) 04:31:17ID:???filemtimeかstat
0954nobodyさん
2008/11/20(木) 05:24:16ID:???削除するにはどうしたらいいのでしょうか。
0955nobodyさん
2008/11/20(木) 07:43:03ID:???0956nobodyさん
2008/11/20(木) 07:54:07ID:???0957nobodyさん
2008/11/20(木) 14:54:48ID:???sample(9)
sample(241)
sample(3234)
などの複数行のファイルでカッコ内の数字が一ケタの場合
その行を削除したいのですが、
$search="/.+\([0-9]\)/";
$log = eregi_replace($search,"",$log);
これだとできません。教えて下さい。
0958nobodyさん
2008/11/20(木) 15:21:21ID:???こうかな
0960nobodyさん
2008/11/20(木) 17:16:11ID:???0961nobodyさん
2008/11/20(木) 17:17:34ID:???0963nobodyさん
2008/11/21(金) 04:12:35ID:???$logArray = explode("\n",$log);
for($i=0;$i<=count($logArray);$i++)
{
$dat[$i] = substr($logArray[$i],0,10);
print $dat[$i].'<BR>';
}
結果はちゃんとprintされているんですが、
Notice: Undefined offset: 80 C:\Program Files(略) on line 24
っていうのがでるんです。
24行目は$dat[$i] = substr($logArray[$i],0,10);です
0964nobodyさん
2008/11/21(金) 05:54:07ID:???↓
$logArray = @explode("\n",$log);
0965nobodyさん
2008/11/21(金) 07:11:18ID:???ループ条件はこうちゃいますのん?
0966nobodyさん
2008/11/21(金) 07:17:08ID:???大域(forの外)で$datは宣言されてるの?
$dat = array();
あとループ条件は>>965
ちなみにエラーが出たラインの1行前(つまり23行目)に原因がある場合があるから
付近のソースを出すのが望ましい
レス数が950を超えています。1000を超えると書き込みができなくなります。