くだすれPHP(超初心者用)4
■ このスレッドは過去ログ倉庫に格納されています
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/
0053nobodyさん
2008/06/27(金) 00:15:13ID:???こういう使い方なら理解できるんだけど
function foo($value)
{
$array = (array) $value;
print_r($array);
}
なんでif()の条件に
if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) )
こういう使い方をするんだろ。
0054nobodyさん
2008/06/27(金) 00:23:41ID:???http://php.net/in_array
0055nobodyさん
2008/06/27(金) 00:26:03ID:???$_SESSION['checked_item']が配列じゃなかったときにエラーはかれるのを回避したかったんじゃないの?
(array)で型キャストすれば単一文字列が入ってても、配列に変換されるし。
0056nobodyさん
2008/06/27(金) 00:43:47ID:???要素が一つでも配列は配列だし。
うーん。
眠いから明日また考えてみる。
ありがとう。
0057nobodyさん
2008/06/27(金) 00:50:44ID:???$_SESSIONは配列かもしれないけど、
$_SESSION['checked_item']は、配列じゃないかもしれないだろ?
0058nobodyさん
2008/06/27(金) 02:50:58ID:???0059nobodyさん
2008/06/27(金) 04:01:35ID:XEI5jC31if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) )
$_SESSION['checked_item'][$_SESSION['checked_item_num']] = $_GET['item_id'];
僕もわかりません。
(array)と結局なんの処理なんでしょうか?
0061nobodyさん
2008/06/27(金) 07:32:24ID:???0062nobodyさん
2008/06/27(金) 12:39:58ID:???item_idがその中に無ければ配列として追加してってる感じ?
その配列キーは$_SESSION['checked_item_num']で最大4まで
それ以上の場合は1に戻す
006356
2008/06/27(金) 22:24:17ID:???やっと理解できました。
array型へのキャストは、スカラならその値をひとつの要素とした配列に
配列ならそのままの状態、というふうに切り替わるんですね。
そこを知らなかったから余計に混乱してました。
ありがとうございます。
0064nobodyさん
2008/06/27(金) 22:42:45ID:???0065nobodyさん
2008/06/27(金) 23:39:22ID:???型キャストって言葉が出てこなかったら、(array)で何が起こってるかっていうのは、
検索しづらいんじゃない?
きっかけとかとっかかり掴みづらい内容ではあったと思う。
超初心者スレだし、多めに見てやりなよ。
0066nobodyさん
2008/06/27(金) 23:44:38ID:???0067nobodyさん
2008/06/27(金) 23:56:10ID:???あとマニュアルが一番基礎の教科書
0068nobodyさん
2008/06/28(土) 00:44:20ID:???0069nobodyさん
2008/06/28(土) 00:46:53ID:???0070nobodyさん
2008/06/28(土) 07:49:57ID:9QUTsyON$str = <<<EOM
あああ<br />
いいい<br />
ううう<br />
<!--S-->
えええ<br />
おおお<br />
<!--E-->
EOM;
このうち<!--S-->と<!--E-->で囲まれている<br />だけを削除したいのですが、
正規表現を使って綺麗に書けるでしょうか?
以下のように試したのですが、<!--S-->と<!--E-->が消えるだけでした。
$str = preg_replace("/<!--S-->([\W\w]+)<!--E-->/",str_replace("<br />","","\\1"),$str);
また、<!--S(E)-->で囲まれている部分は改行や半角英数字などが含まれる場合があります。
どなたかご教示いただけますでしょうか。よろしくお願いいたします。
0071nobodyさん
2008/06/28(土) 07:57:27ID:???0073nobodyさん
2008/06/29(日) 10:08:17ID:l4KJ7KZ4同じ方法でUTF-8を判別させる方法てありますか?BOMは
考慮にいれたくないです。
0074nobodyさん
2008/06/29(日) 17:48:22ID:???0075nobodyさん
2008/06/29(日) 18:23:50ID:hneArZSD基礎からのPHPからの質問なんですが、
自分のサーバーに移行して実行したところ、
loginForm.phpでIDとパスワードを聞かれて入力したいのですが、
うごきません。というかIDとパスワードはなんなんでしょうか?
本にはroot,rootpassと書いてあったんですが、動きません。
すべてデータベースも起動させているのですが、pearも入っています。
http://gichioka.web.fc2.com/blog.rar
ここにソースを保存したので、よろしくです。
0076nobodyさん
2008/06/29(日) 18:31:26ID:???それよりおまえ、>5で>26だろ?
SQLを基礎から勉強してこいって。
0077nobodyさん
2008/06/29(日) 18:41:10ID:hneArZSDよろしくです。
SQLの勉強もします。
お願いします
0078nobodyさん
2008/06/29(日) 18:43:49ID:???0079nobodyさん
2008/06/29(日) 19:07:35ID:hneArZSD0080nobodyさん
2008/06/29(日) 19:10:11ID:???0081nobodyさん
2008/06/29(日) 19:14:08ID:hneArZSD今回これがなぜうごかないのかわかりません。
この板ではだめですか?
0082nobodyさん
2008/06/29(日) 19:15:56ID:hneArZSDあと、ログイン画面は表示されるのですが、
下のトップページに戻るは真白です。
よろしくお願いします。
0083nobodyさん
2008/06/29(日) 19:42:13ID:???0084nobodyさん
2008/06/29(日) 20:50:46ID:hneArZSD0085nobodyさん
2008/06/29(日) 21:24:23ID:???0086nobodyさん
2008/06/29(日) 22:42:12ID:???0087nobodyさん
2008/06/30(月) 01:49:34ID:???0088nobodyさん
2008/06/30(月) 02:51:43ID:???0089nobodyさん
2008/06/30(月) 18:04:53ID:???テーブル、カラム、データベース全体……個別個別で細かく設定できすぎてよくわからない。
0090nobodyさん
2008/06/30(月) 22:24:41ID:???どこか参考になるサイトありますか?
/* PUSH */
$arr = array();
$num = 5; //意味ないかもしれませんが・・・
for($i = 0;$i < $num;$i++)
{
$arr[] = $i; //array_push($arr,$i); とやろうとしたけど、これは無理でしょうか。
}
$ct = count($arr);
echo "要素数:$ct\n");
・
・
・
・
てな感じで書いてるんです。
本当はarray_pushやarray_pop、unshiftやらを使いたいのですが、
これら全てが上手く動いてくれません。助言お願いします。
0091nobodyさん
2008/06/30(月) 22:27:09ID:???0092nobodyさん
2008/06/30(月) 22:31:07ID:???for文の中身は確か、
$arr[] = $i + 1;
の間違いでした、スイマセン。
echoで$arrの中身を順番に表示させると、
1
2
3
4
5
という風になるんですが、array_pushで>>90のコメントで書いている通りのコードで
実行させると、配列から何も取り出せてなかったんです。
0093nobodyさん
2008/06/30(月) 22:32:46ID:???0094nobodyさん
2008/06/30(月) 22:34:22ID:???実は入社してから、初めてPHPを触りまして、まだ2日目です。
0095nobodyさん
2008/06/30(月) 22:35:55ID:???0097nobodyさん
2008/06/30(月) 22:40:44ID:???pushの部分では、>>90の通りです。
後は、echoで&arrの中身5つを順に表示させて終わりです。
$arr[] = $i + 1;
の下に、
echo = "$arr[i]\n";
これだけです。
ちなみにstackクラスの中でpushとpopの関数を作っています。
0098nobodyさん
2008/06/30(月) 22:41:37ID:???0099nobodyさん
2008/06/30(月) 22:42:43ID:???ああ・・そうです、すいません
まだ$つけるの慣れてないものでつけ忘れました・・・
実際のコードではつけてますので。
0100nobodyさん
2008/06/30(月) 22:45:49ID:???$arr = array();
for($i=0; $i<5; $i++) {
array_push($arr,$i);
echo "$arr[$i] ";
}
結果
0 1 2 3 4
0101nobodyさん
2008/06/30(月) 22:56:51ID:???ええ・・・出来るんですか
あと、>>97でecho = ...とかやってますね、もう間違い酷すぎます・・・。
自分の環境では、
PHP5
apache 2.2
eclipse(PDT) 3.3
なんですけど、array_push等が使えないはずはないと思うんですけどね。
メモらせていただきます、ありがとうございます。
0102nobodyさん
2008/07/01(火) 20:24:33ID:???A〜Eの5つの投票対象(固定)に対して1票と1行コメントを同時送信できるスタンダードな(?)ものです
A.txt 〜 E.txtまでを作成し、そこから票数を読んで加算、上書きするという形で一応投票の基本的な部分までは作成することが出来ました
またコメントも別にA_comment.txt 〜 E_comment.txtを用意し、そこの最後の行に追記していくことで保存できるようにしました
そして今、現在の各アイテム票数をランキングにして表示できるようにしたいのです
具体的には、例えばAに15票、Bに20票、Cに5票、Dに1票、Eに50票入っていたとしたら
1位 E(50票)
2位 B(20票)
3位 A(15票)
4位 C(5票)
5位 D(1票)
という風に表示したいのです
またそれに関連して各項目をクリックするとコメントを見られるページに飛ぶという仕様を考えましたが、これはリンクでGETを使ってパラメータで分岐すればいいと考えています
肝心のランキング表示部分をどう作っていいのか分からないので、どなたか教えていただけないでしょうか
ソートについても色々調べてみましたが、票数を並べ替えた後の項目との関連付けをどうやっていいかよく分かりませんでしたorz
010475です。
2008/07/02(水) 02:21:42ID:/ZwHa0Ji今勉強をして、なんとか自己解決できるように
したいと思います。
SQL勉強中です。
亀レスすいません。
0105nobodyさん
2008/07/02(水) 02:48:17ID:???一回、PHPから離れて、MysqlとかでDB構築して、コマンドラインでいろんなSQL実行してみればいいと思うよ。
がんばれ。
0106nobodyさん
2008/07/02(水) 02:49:38ID:???一番最後「HTTP リクエストで独自のヘッダを送信する」にある
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
送信されるリクエスト
X-MyCustomHeader: Foo
とありますが、実際受信側のレスポンスを見ると、
HTTP_X_MYCUSTOMHEADER: Foo
という風に"HTTP_"が付加されていました。
そういうものなんでしょうか?
0108nobodyさん
2008/07/02(水) 12:23:28ID:???Host: www.example.com →HTTP_HOST
User-Agent: PHP →HTTP_USER_AGENT
X-MyCustomHeader: Foo →HTTP_X_MYCUSTOMHEADER
つまりはそういうこと。
0109nobodyさん
2008/07/04(金) 00:37:52ID:q3bb7c0a89.53201 35.45 15.6783にしたいのですがどうしたらいいのでしょうか?
0110nobodyさん
2008/07/04(金) 00:38:48ID:q3bb7c0a0111nobodyさん
2008/07/04(金) 00:39:27ID:???すいません…
0112nobodyさん
2008/07/04(金) 00:43:41ID:???$a = 8953201
$a = preg_replace('/^([0-9]{2})([0-9]+)$/', '$1.$2', $a);
つまり正規表現を使えばよいのではないか。
0113nobodyさん
2008/07/04(金) 00:52:45ID:???ちなみにこれは、前半部分が$1に、後半部分が$2になってるって解釈でいいんでしょうか?
0115nobodyさん
2008/07/04(金) 01:09:53ID:???0116nobodyさん
2008/07/04(金) 12:20:55ID:???<?php
$link = dbx_connect(DBX_SYBASECT, "localhost", "db", "username", "password");
dbx_close($link);
?>
とりあえずこれで、dbx関数とsybasect周りが使えるかどうかチェックしたんですけど
エラーが出てしまいました。
Warning: dbx_connect() [function.dbx-connect]: dbx: module '7' not loaded or not supported
環境はxampp1.6.6 for linuxで、apacheは2.2.8、PHPは4.4.8です。
extensionに設定されたディレクトリに、php_dbx.dllとともに、php_sybase_ct.dllを配置してあるので
読み込まれていない・・・ということは無いと思いますし(apacheの再起動は何度もかけています。)
php.iniの設定も問題なさそうです。
PHPのバージョンも、4.2.0より後発のもので、サポートもしていると思うのですが
どなたか、なにとぞ助力をお願いできないでしょうか。
0117nobodyさん
2008/07/04(金) 13:10:39ID:???0118nobodyさん
2008/07/04(金) 14:04:56ID:???マシン入れ替えていろいろ試してたら混乱してしまった。
0119nobodyさん
2008/07/04(金) 15:33:23ID:???0120nobodyさん
2008/07/04(金) 16:50:08ID:4Xa3cuivPHPバージョンは5
自動変換系は全てパス、スクリプトはUTF-8で記述、
internal_encodingもutf-8とします。
スクリプトの処理内容は
UTF−8エンコードで送られてくる文字列”あいうえお”
を受け取りそれをスクリプト内で
”あいうえお”か判断して”あいうえお”
なら真を返すてだけの単純なものなのですが
”あいうえお”を送っても真を返してくれません。
それで今度はポストするデータをEUCエンコードで送ってみると
あらふしぎ真を返してくれるんです。
PHPスクリプト内に書いてある文字列たとえば
<?php
$a="あいうえお";←ここの部分
?>
はロケールのエンコードで解釈されてる気がするのですが
(OSのロケールはEUC−JPだった)
どうなんでしょうか?舌ったらずで申し訳ありません。。。
012175です。
2008/07/05(土) 00:32:52ID:MACe5BF6なんかutf-8にしないといけない理由とかあるの?
0122nobodyさん
2008/07/05(土) 00:36:49ID:???0123nobodyさん
2008/07/05(土) 01:57:54ID:???送られてくるデータってのは、GETしてるの?
POSTしてるの?
ついでに、どちらでもいいけど、ブラウザがGETorPOSTしたデータを、echoしたら文字化けするの?
真偽値取る前に、そこらへん確認してみては。
0124nobodyさん
2008/07/05(土) 06:27:10ID:???ソースの文字コードがeuc-jpだったというオチでは?
euc-jpの「あいうえお」とutf-8の「あいうえお」じゃ当然マッチしないわ。
0125nobodyさん
2008/07/08(火) 22:48:01ID:nzIgHbiUmail_mimedecodeで添付付きメールを分解したんですが、その添付ファイルを撮影時間の名前で保存したいんです
おそらく、一度保存してからexifデータを読み込み、その後名前を変えるって形ならいけるとは思うんですが
二度手間になってしまうのでもし出来るのならと思いまして
0126nobodyさん
2008/07/09(水) 01:55:27ID:U9Y+NLIi0127nobodyさん
2008/07/11(金) 12:12:19ID:???postfixを使って、phpからメールを送りたいのですが
うまく動作していない状態です。
環境はCentOS5上、Apache2.2.9 PHP-4.4.8 postfix-2.5.2で
全てソースからインストールしています。
直接、mailコマンドでgmailにテストメールを送信したら、正常に送信されたので
ポートの開放や、postfixそのものの設定は問題なさそうなのですが
PHPからmb_send_mailを使用して送信した場合、gmailに送信されずにいます。
php.iniのsendmail_pathには「/usr/sbin/sendmail.postfix -t -i」と
設定しているのですが、エラーログに以下の内容が出力されていました。
Jul 11 11:52:42 localhost postfix/local[31480]: fatal: open database /etc/aliases.db: No such file or directory
Jul 11 11:52:43 localhost postfix/master[23909]: warning: process /usr/libexec/postfix/local pid 31480 exit status 1
Jul 11 11:52:43 localhost postfix/master[23909]: warning: /usr/libexec/postfix/local: bad command startup -- throttling
問題点が思い当たる方いらっしゃいましたら、何卒ご助言をお願いいたします。
0128nobodyさん
2008/07/11(金) 12:58:30ID:???alternatives --config mtaでpostfix選択するか
system-switch-mailで切り替える方が良いよ
0129nobodyさん
2008/07/11(金) 19:41:44ID:???loginform.phpの部分とかがおかしいみたいです。
Windowsでは動くらしいけどlinuxでは動かないとかなんとか。
もうくそ本でした。
くやしい.....
誰かなんとか動くようにはできないでしょうか。
ソースは
http://gichioka.web.fc2.com/blog.rar
です。
マルチ失礼しました。
報告までです
013075です。
2008/07/11(金) 19:49:15ID:???129=75です。あのときブログのことで質問しました。
あの時はいろいろ教えていただきありがとうございました。
0131nobodyさん
2008/07/11(金) 20:40:04ID:???ログインできたの?
0132nobodyさん
2008/07/11(金) 20:44:45ID:???admin.phpはいけます
0133nobodyさん
2008/07/11(金) 22:11:31ID:???0134nobodyさん
2008/07/11(金) 23:01:47ID:???0135nobodyさん
2008/07/12(土) 10:17:05ID:???0136nobodyさん
2008/07/13(日) 04:23:27ID:???3000もしたんだよ
0137nobodyさん
2008/07/13(日) 20:06:55ID:???3000は大金だもんな
元気出せよ
0138nobodyさん
2008/07/13(日) 21:41:45ID:???PHPの勉強をあきらめろってことじゃあ…
0139nobodyさん
2008/07/15(火) 03:16:57ID:YrbWt9Itソフトバンクの本はもう買わん
0140nobodyさん
2008/07/15(火) 15:59:19ID:px8EuhxF以下のようなXMLからCountの値を取得したいのですが、
取得できません。
$string = <<<XML
<?xml version="1.0" ?>
<document>
<Hoges>
<Count>2</Count>
<Hoge>
<aa label="monar" />
<name>モナー</name>
</Hoge>
<Hoge>
<aa label="yaruo" />
<name>やる男</name>
</Hoge>
</Hoges>
</document>
XML;
$xml = simplexml_load_string($string);
foreach($xml->Hoges as $key => $tmp){
/* ここでCountの値を取ろうとしていますが
$keyが'Hoges'になっていて取得できません。
*/
}
↑のforeach内で取得する方法を教えてください。
ちなみに、$xml->Hoges->Countでは正常に取得できます。
どうかよろしくお願いします。
0141nobodyさん
2008/07/15(火) 19:35:37ID:???echo $tmp->Count;
}
0142nobodyさん
2008/07/16(水) 01:29:04ID:yQh99k9kPOSTで受け取っている$_POST['text']に日本語が含まれていないものを除外、urlが2つ以上含まれているものを除外したいのですが
どのようにしたらよいのでしょうか?
あと似たような問題は他にもいくらでも出てくると思うので、SPAM書き込み対策
掲示板作成の参考になるようなHPとかあるようでしたら教えてください。
よろしくお願いいたします。
0143nobodyさん
2008/07/16(水) 01:37:08ID:???javascriptでこの文字が入っていたら除くとか
検索すれbないいよ。
もうひとつはapacheのところで、どこからきているか
を解析してそいつらはみられないようにするんだ。
0145nobodyさん
2008/07/16(水) 08:03:30ID:???$baseball = array('鈴木'=>16, '松井'=>55, '清原'=>5);
foreach ($baseball as $key => $val){
print ($key." : ".$val."<br />");
}
?>
これの
$key の後ろの . って何のために必要なんでしょうか?
0146nobodyさん
2008/07/16(水) 09:49:58ID:???0147nobodyさん
2008/07/16(水) 12:25:39ID:???連結をしなければいけないときとしなくてもいいときがわからないというか?
0148nobodyさん
2008/07/16(水) 13:00:16ID:???お前はいったい何がしたいんだ?
>>145のソースでは当該箇所はどう見ても文字列を連結しようとしている
わけだから、連結演算子(.)は省けないだろう。
どうしても連結したくないなら
print $key;
print " : ";
print $val;
print "<br />";
とでもしておけ。
普通なら
print "{$key} : {$val}<br />";
で終わりだがな。
0150nobodyさん
2008/07/16(水) 13:20:58ID:JWV92MXFたしか、 .で連結するより ,で連結した方が、処理的に早いって聞いた
処理速度 { } > , > .
これであってるかな?
0151nobodyさん
2008/07/16(水) 13:23:05ID:???最適化は、脳味噌に適用しろ!!
(http://d.hatena.ne.jp/gegegen/20080524/1211622711より)
■ このスレッドは過去ログ倉庫に格納されています