【PHP】下らねぇ質問はここに書き込みやがれ 21
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/05/23(火) 22:05:17ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0655nobodyさん
2006/06/02(金) 17:46:09ID:???0656nobodyさん
2006/06/02(金) 17:56:04ID:???$a = "02";
$a += 0;
でも int にキャスト変換されるけど、もっと正当な方法で、
intval($a) か (int) $a
がいいと思う。
0659nobodyさん
2006/06/02(金) 17:59:09ID:???動作も一応自分の想定どおりに動いています。
ありがとうございます。
ただ
http://www.php.net/manual/ja/language.types.array.php
の下のほうに書いてあるとおり、連想配列(?)の形式で二次元配列を作成したところ、第一項の添え字が文字列でしか応答してくれませんでした。
そのため別に第一項だけの配列を作成して、それを使って呼び出すようにしたのですが、
$fruits = array ( "fruits" => array ( "a" => "orange",
"b" => "banana",
"c" => "apple"
),
"numbers" => array ( 1,
2,
3,
4,
5,
6
),
"holes" => array ( "first",
5 => "second",
"third"
)
);
と設定した配列を、
echo $fruits["holes"][5];
ではなくて、数字で直接に
echo $fruits[0][5];
というふうに呼び出せないのでしょうか?
0661nobodyさん
2006/06/02(金) 18:10:07ID:???$a = "02";
$a += 0;
だと、「$a += 0;」の部分を不要なものとして他人に消される可能性がある。
分かってる人間ならともかく、ぱっと見じゃ不要な処理にしか見えない。
>>656氏の方が処理の意味が簡潔に分かりやすくて良いと思われる。
0663nobodyさん
2006/06/02(金) 18:54:32ID:???中途半端な知識のせいか、思い込みで凝り固まってしまってる気がする。
まず、PHPの配列は添字が数値だろうと、文字列だろうと全て連想配列になる。
$arr = array();
$arr[0] = 'a';
$arr[5] = 'b';
var_export($arr);
これは↑のようにすれば、簡単に確認出来る。
で、第一項目とか言ってるのは
$arr = array(
'hoge' => 'a', // 最初の要素だから第一項目
'fuga' => 'b', // 2番目だから第二項目
);
のような勘違いをしてるんだろうけど、
PHPの配列は全て連想配列なので、これらを$arr[0]や$arr[1]のように
数値を添字にして表示することは出来ない。
どうしてもやりたいなら、
$ar2 = array_values($arr);
$ar2[0];
のようにするべし。
http://www.php.net/manual/ja/ref.array.php
http://www.php.net/manual/ja/function.array-values.php
0664nobodyさん
2006/06/02(金) 19:00:05ID:???こんな感じでもいけそうかな。
$k = array_keys($fruits);
echo $fruits[$k[0]]["a"];
$fruits[$k[0]]["a"] = 'Qoo';
1次元目の添字を$k[0],$k[1]のようにする。
0665nobodyさん
2006/06/02(金) 19:02:39ID:???ありがとうございます。なんとなく分かったような気がします。
phpは数字と文字列がごっちゃになってるので、その辺が混乱してしまいます。
Cよりは便利なのは確かなのですが・・・。
0666nobodyさん
2006/06/02(金) 19:23:18ID:???mail()関数をリプレイスする、外部サーバを使う関数って無いどすか。
セキュリティ的に、プロバイダのsmtpサーバを使った方がいいと思いまして。
0667nobodyさん
2006/06/02(金) 19:47:03ID:???PEAR::Mail
http://pear.php.net/manual/ja/package.mail.mail.php
0668nobodyさん
2006/06/02(金) 20:02:10ID:???のですが、以下の正規表現だと全く削除されません。
正しくはどうすればいいのでしょうか?
$debug_str = preg_replace("/<html>.*<\/html>/mi", '', $debug_str);
0669nobodyさん
2006/06/02(金) 20:03:12ID:???PEARのMailライブラリとかはどうよ?
http://pear.php.net/manual/ja/package.mail.mail.php
0670669
2006/06/02(金) 20:03:46ID:???0672nobodyさん
2006/06/02(金) 21:12:18ID:???$debug_str = preg_replace("/<html>(?:(?!<\/?html>).)*<\/html>/gi", '', $debug_str);
というのはどうだろう。
0673nobodyさん
2006/06/02(金) 21:15:47ID:???>>669=670
ありがとう。
$mail_object =& Mail::factory('smtp', $params);
みたいにバックエンドにsmtp指定すればいいのね。多分。
0675nobodyさん
2006/06/02(金) 23:40:43ID:???これが面倒なので、
$a =& $this->array1;
のように、ローカル変数に代入してから使うといいのかなと思いつきました。
これってPHP的によいプログラミングといえるでしょうか。
0678nobodyさん
2006/06/03(土) 05:15:06ID:???PHPとImageMagickを使って画像をリサイズしたいのですが
passthru("$convert -geometry 10 x 10 $image $dst");
これでやってもリサイズできません。
以前はできていたのですが、突然できなくなってしまいました。
よろしくおねがいします。
0679nobodyさん
2006/06/03(土) 06:16:04ID:???20060602_ABCDE.log
20060603_ABCDE.log
$nowdate = date("Ymd");
$lines = file("$datalog");
該当ファイル1個をマッチングさせて開きたいんだけど
$datalog はどうやって指定すればいいの?
0680nobodyさん
2006/06/03(土) 07:21:50ID:???一時ファイルに書き出してincludeするしか思いつかないのですが、文字列のまま実行する方法があれば教えて下さい。
0681nobodyさん
2006/06/03(土) 07:27:02ID:???それができると、tmpfile()で書き出し→include()で読み込み というのが簡単にできるんですが。
0682nobodyさん
2006/06/03(土) 08:03:33ID:psho47Yz具体的には、apache2 php4 mysql4.1 phpmyadmin2.8.1 をwinXPproSP2の環境にインストールして
ローカルでカウンタをまずはmySQLとの連携で作ってみようとしています。
phpは具体的にいじったことはないのですが、basicやC等は少しできる程度です。(計算用途)
参考サイトは
ttp://www.futurism.ws/server/phpMyAdmin/sample001.html
これをコピペして設定し、IEで開くとカウンターを更新できませんと出ます。
最初は接続できてないのかと思い、passを無効にしてやると、サーバに接続できませんのエラー。
そこでcounticに書き込みの行を無効にすると、1と表示されるので、この行の書式が間違っているのかと思い
他のサイトや試行錯誤するも変わらず。
次にphpmyadminから数値0を3に書き換えてみたけど、表示されるのは1。
つまり、読み込み自体もたぶんできてないのだと思います。
phpmyadminの使い方や設定方法、mySQLの設定に問題があるのかと思うのですが、全くわかりません。
ちなみにインストールのために参照したサイトは、
ttp://tsuttayo.sytes.net/
です。
0684nobodyさん
2006/06/03(土) 08:26:30ID:???mysql_fetch_arrayの前にmysql_closeしてるけど大丈夫なの?
オレはデータ取得するまでDB閉じたことないからわかんね
というかこのソース、いちいちDB接続してんのな。効率悪い
whileの中で$rowの値をprint_rしたらどうなる?
0685nobodyさん
2006/06/03(土) 08:30:18ID:psho47Yzphpmyadminから同じrootで入っていて、データベースの作成&編集が可能だから問題ないと思います。
念のためphpmyadminから特権の確認をしたところ、グローバル特権がすべて設定されており、リソースも0(0で制限がなくなると書いています)
ので大丈夫だと思います。
0686nobodyさん
2006/06/03(土) 08:39:45ID:psho47Yzとなります。
3となっているのはデータベースのcounticを3にしてみたからで、0にしてやり直すと0になっていました。
という事は、はやりアップデートができないということですね・・・。
DBを閉じることは疑問に思ったのですが、とりあえずやってみようということで、やってみてます。
0687nobodyさん
2006/06/03(土) 08:47:05ID:psho47Yzmysql_connect("localhost","root","**");
mysql_select_db("counter");
$result = mysql_query("select * from counter");
$array = mysql_fetch_array($result);
$counter = $array['countic'];
$counter++;
print $counter;
$result = mysql_query("update counter set counter=$counter") or die("update missing");
?>
このような形でやってみましたが、結果は 1update missing
やはりupdateができないようです。
0689nobodyさん
2006/06/03(土) 10:53:34ID:???$array = mysql_fetch_array($result);
で$arrayにはまともな値が入ってきてるの?
0690nobodyさん
2006/06/03(土) 11:12:33ID:???679です。
ごめんなさい、_ABCDEは時間分秒が入るみたいなので不変ではないです。
スカラーに性器表現とかは使えませんか?
0692nobodyさん
2006/06/03(土) 11:57:07ID:???その日付のファイルは一個(時間は不定で)なの?
であれば、正規表現を使うより、
$date = date("Ymd");
strpos か、 (substr($filename[0], 0, len($data) == $data)
の判断を使うといいよ
0693692
2006/06/03(土) 11:59:15ID:???strposで$dateと同じ文字列が含まれているか調べるか、
substrで先頭から同じ文字数抜き出したのと一致しているかを調べる
という方法が、正規表現より早いとおもふ
0695nobodyさん
2006/06/03(土) 12:53:32ID:???よく見たらcounterってvarcharじゃん
↓でどうよ?
mysql_query( "update counter set counter=\"$counter\"" );
あと、phpmyadmin使ってるならそこでSQL文打てるから、そっちでテストしてみそ
0696nobodyさん
2006/06/03(土) 15:02:59ID:???まとめて書いてrequireしています。
このconfig.inc.phpを、ネットからアクセスできるところに置いておくのは
セキュリティ的に危ないと思うのですが、みなさんはどのように対策しているのでしょうか?
0698nobodyさん
2006/06/03(土) 15:11:08ID:psho47Yz中身の数字を変えれば変わるという事は、入ってるのでしょうか?
>>695
変えてもだめでした。
SQL文ちょっとわかんないんで調べてテストしたらまた報告します。
0701nobodyさん
2006/06/03(土) 15:16:51ID:psho47Yz53→0へphpmyadminから変更しましたが、これはSQL文とはまた違うのでしょうか?
0702nobodyさん
2006/06/03(土) 15:40:19ID:???それSQL文だよ
それ見るとDBはUTF-8みたいだね
今までの流れブッタ切るようで悪いけど、counticをintegerとかにした方がいいと思う
0703nobodyさん
2006/06/03(土) 16:32:17ID:???http://www.hoge.com に、PHPファイルからアクセスした時、返されるステータスコードを
PHPで取得させたいのですが、どのようにすればよいか教えてください。
宜しくお願いします。
0704nobodyさん
2006/06/03(土) 16:36:20ID:???とりあえずエラーでも表示してみたらどうかね
$result = mysql_query("update counter set counter='$counter'") or die(mysql_error());
0705nobodyさん
2006/06/03(土) 16:43:06ID:???hoge.comは実際に使われているドメインだから、例に使うな。
例としてドメインを使う場合は、example.(com|net|org)を使え。
RFC2606
http://suika.fam.cx/~wakaba/documents/rfc-ja/rfc2606-ja.html
0706nobodyさん
2006/06/03(土) 16:49:13ID:???一応回答も書いといてやる。
PEAR::HTTP_Client
http://pear.php.net/manual/ja/package.http.http-client.php
0708nobodyさん
2006/06/03(土) 16:59:45ID:AI0NcZr1セグメンテーション違反です
ってエラーが出るんですが、これはなんでしょうか?
0709nobodyさん
2006/06/03(土) 17:03:10ID:???メモリの読み書きしちゃいけない場所に読み書きしちゃったよってことです。
実行しているスクリプトで無限再帰呼出しとかしてませんか?
0711nobodyさん
2006/06/03(土) 17:04:27ID:???ヒント
http://blog.ohgaki.net/index.php/yohgaki/2006/04/25/phpa_ra_ei_bugtracka_ra_na_a_fa
0713nobodyさん
2006/06/03(土) 17:08:42ID:psho47Yzそういう事できてたんですね・・・。
Unknown column 'counter' in 'field list'
とのエラーです。ちょっと調べてみます。
0714707
2006/06/03(土) 17:11:09ID:AI0NcZr1>>711
なるほど。確かに心当たりあります。
無限ループはしてないですが、数値ですが30000レコード位の配列扱ってました。
プログラム修正します。
どうもありがとうございました。
0715nobodyさん
2006/06/03(土) 17:14:12ID:???すいません。
っていうか、根本的なミスに気づきました。
open_basedirの設定がダメだったようです。
しかもこれを修正するのに難儀しました・・・(VPS環境のため)。
0716nobodyさん
2006/06/03(土) 17:43:36ID:???0717nobodyさん
2006/06/03(土) 18:15:05ID:???0718nobodyさん
2006/06/03(土) 18:29:48ID:???http://www.php.net/manual/ja/language.constants.predefined.php
http://www.php.net/manual/ja/reserved.variables.php#reserved.variables.server
0719nobodyさん
2006/06/03(土) 18:48:00ID:???safe_mode = on にするとimagemagickが使えません。
offにすると使えるのですが、セキュリティ上onにしたいのです。
onにしてimagemagickを使うにはどうしたらいいでしょうか?
0721nobodyさん
2006/06/03(土) 19:00:09ID:psho47Yz解決できました。
13行目の代入するフィールドが違っていたようです。
くだらない質問にお付き合いいただいてありがとーです。
0723nobodyさん
2006/06/03(土) 20:56:05ID:pcQiHytUさくらには、php.ini編集画面というのがあり、
そこは空欄で、なにも書かれていません。
写真画像の投稿ファイルの上限を2MBから5MBへ上げたいのですが、
upload_max_filesize = 5M //
の一行だけをその空欄に記入すれば変更出来ますかね?
0725nobodyさん
2006/06/03(土) 21:18:33ID:pcQiHytUこのタグイの質問板はないのですかね?
0726nobodyさん
2006/06/03(土) 21:22:35ID:???http://pc8.2ch.net/test/read.cgi/hosting/1147179322/254-256
これか。
あのスレ、この板とかWeb板の.htaccessスレに誘導投げることが多いんだけど
鯖特有の事情を知らん人間には答えられないものまで投げてるときがある。
俺はあっちのスレでいいと思うけどな。
0727724
2006/06/03(土) 21:34:07ID:???3Mにしてみてphpinfo()で確認したから変更されると思う。
(鯖によるかもしれないが)
てか、最初にさくらに聞くべきと思う。
0728nobodyさん
2006/06/03(土) 23:22:45ID:ZQdIlxtX0730nobodyさん
2006/06/03(土) 23:54:34ID:???例)
$hoge['a'][] = "1";
$hoge['a'][] = "2";
$hoge['a'][] = "3";
$hoge['b'][] = "1";
$hoge['b'][] = "2";
この場合$hogeで[b]の配列を先頭に来るように並び替えたい。
0731nobodyさん
2006/06/03(土) 23:59:13ID:ZQdIlxtX標準出力はとれるけど、標準エラー出力がとれず・・・
popenもやってみたけど、なぜかうまくいかず。
http://jp.php.net/manual/ja/function.popen.php
0732nobodyさん
2006/06/04(日) 00:01:23ID:???と設定したいのですができません。
/home/にするしかないのでしょうか?
0733nobodyさん
2006/06/04(日) 00:05:45ID:???標準エラーを標準出力にリダイレクトしてみたら?
proc_open()ならデスクリプタを区別して取得できるよ。
0734nobodyさん
2006/06/04(日) 00:11:15ID:GKXODwlNhttp://*******/user/aiueo/index.html
の/aiueo/を作成したいのですが
0737nobodyさん
2006/06/04(日) 00:35:10ID:???phpinfo();で出力される
1.System
2.Build Date
3.Configure Command
この3つ、もしくはこれら一覧がのってる関連の項目を表示させないことってできますか?
0738nobodyさん
2006/06/04(日) 01:00:32ID:???0740nobodyさん
2006/06/04(日) 01:18:18ID:GKXODwlN教えてください
0741nobodyさん
2006/06/04(日) 01:28:51ID:???http://www.google.com/search?num=50&hl=ja&q=PHP+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E4%BD%9C%E6%88%90&lr=lang_ja
ちょっとググッただけで山ほど出てくるぞ
あと、フォルダって言う言葉とディレクトリって言う言葉でググると当然だけど検索結果が違ってくる。
どっちも基本的に同じ意味だから両方覚えとけ
596 名前:nobodyさん[sage] 投稿日:2006/06/02(金) 01:58:40 ID:???
>>593
ちょっとググッただけで山ほど出てくるぞ。
お前らなんだ?未だにクソした後は親にケツ拭いてもらってるのか?
ちょっとは自分で何とかしようとしてみろよ
お前はまず自分のケツを拭く事からはじめろ
努力も出来ないような奴がプログラミングなんてするな!
※一部編集
0742nobodyさん
2006/06/04(日) 01:38:44ID:???>>596みたいな教える気のないやつはこなくていいよなw
説教してストレス発散したいだけなら、よそにいけっつーの。
0743nobodyさん
2006/06/04(日) 02:06:11ID:???asortでできるくさい。
うまくいかないようならuasortで比較部分を自作かな。
>>738
str_replaceで置き換えるしかなさそう。
0744728
2006/06/04(日) 02:37:25ID:aEL54rVyproc_open()で標準エラー出力とれました。
popen()のリダイレクトでもさっきはなぜかできなかったのですが、
できるようになりました。
0745nobodyさん
2006/06/04(日) 04:16:00ID:???>>741が言っている「フォルダとディレクトリは基本的に同じ意味」ていうの、
あくまで"基本的に"だからな。
実際は似て非なるものだが、ほぼ同義として扱われているだけ。
0746nobodyさん
2006/06/04(日) 04:18:16ID:???0747nobodyさん
2006/06/04(日) 06:05:13ID:???何がしたいのかいまいち分からんが。
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
// $infoの内容を編集
echo $info;
0748nobodyさん
2006/06/04(日) 06:10:59ID:???引数で指定出来るじゃねーか。
マニュアル嫁よボケナス
http://jp2.php.net/manual/ja/function.phpinfo.php
0749nobodyさん
2006/06/04(日) 07:42:46ID:???レンタルサーバーです。
いつもこのpublic_htmlの中で色々やってるのですが、
/home/user/log/
にPHPでアクセスすることは可能ですか?
直接ブラウザでlogにアクセスするんじゃなくて、
内部的にPHPを通じてデータを引き出すのは可能か、ということです。
0750nobodyさん
2006/06/04(日) 07:46:45ID:???0751nobodyさん
2006/06/04(日) 07:47:21ID:???0752nobodyさん
2006/06/04(日) 09:40:30ID:???どうもありがとう。タブ文字を空白に展開する関数はないということなので、
自分で作ってみました。PHPならこんな関数あってもよさそうですけどね。
function expand_tabchars($str, $width=8) {
$splitted = preg_split('/¥t/', $str);
$last = array_pop($splitted);
$buf = array();
foreach ($splitted as $s) {
$buf[] = $s;
if (($rindex = strrpos($s, "¥n")) !== false)
$column = strlen($s) - $rindex - 1;
else
$column = strlen($s);
$n = $width - ($column % $width);
$buf[] = str_repeat(' ', $n);
}
$buf[] = $last;
return join($buf);
}
ひまな人がいたら添削おねがいします。
0753nobodyさん
2006/06/04(日) 09:58:38ID:???添削してもらうより先に自分で実行してみりゃいいじゃん
これじゃいかんの? "\t"でexplodeできるか知らんけど
$space = str_repeat( ' ', $width );
implode( $space, explode( "\t", $string ) );
■ このスレッドは過去ログ倉庫に格納されています