【PHP】質問スレッドpart33【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/16(木) 03:19:52ID:xwXojaq/【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0175nobodyさん
2006/02/22(水) 16:17:54ID:???んまぁ、bashとか全然毛色の違う物の経験則に引きずられるのなら、
いっそ、passthru()とかでls叩いて、戻り値を整形したら?
本が読めない人間に、言語の習得は非常に困難だと思ふ
ってか、文学本か何かと間違っていないか?
0176156
2006/02/22(水) 16:24:13ID:???ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm
↓こんな感じにしてみましたが、ifのところがやっぱりおかしいんですかね・・。
うまくいきません。
ちなみにphpってエラーが起こると「何行目がおかしい」ってちゃんと表示するので便利ですね!
$dir=@opendir(".") or die("failed to open the directory");
while($file = readdir($dir)) {
if (($file)!="^¥..*"){
echo '<LI><A HREF="' . $file . '">' . $file . "</A>¥n";
}
}
closedir($dir);
>>175
lsを使ってdirectory表示させる方法はSSIですでに実現できています。
phpを学ぶひとつの例としてdirectory表示に挑戦しているのです。
ちなみに、言語を学ぶのには、英語と同じで、まずは実際の例文にいっぱい触れるのが
一番だと思いますよ。
文法から入っちゃうとかえって学ぶ速度が遅くなります。経験的に。
例文を読んでみて、「これってどういう意味なのかな?」って逆引的に
正書などで学ぶのが王道です。
0177nobodyさん
2006/02/22(水) 16:24:56ID:???2ch暦何年?
いい加減ウザいよ。
空気読めてない事ぐらいは察しろよ。
それができないなら質問スレでなりふり構わずレスするな。
0178156
2006/02/22(水) 16:25:04ID:???みなさんのおかげでphpのなんたるかの触りくらいはわかるようになってきました。
またご指導よろしくお願いします。
0179156
2006/02/22(水) 16:26:52ID:???2ch歴は3年くらいでしょうか。
空気を読むのはおまえよりは100倍くらい上だと思いますよ。
空気を読めてないのは自分だけってのがわからないみたいだね。
2chはまだまだ177のような初心者をいちころでだませるので楽しいですね。
じゃ、こんどこそ夜勤に言ってきます。
177はくやしかったら捨てぜりふのひとことでも吐いててねw(ぷげら
0181nobodyさん
2006/02/22(水) 16:37:02ID:???君はPHPよりPerlの方が向いてるかもしれない。
あれはsh他のコマンドラインスクリプトの発展したものだから文化が近いと思うよ。
PHPは見た目が少しPerlに似てる程度で考え方の基本はC言語に近い。
0182nobodyさん
2006/02/22(水) 16:40:43ID:stieJNuSたとえば関数がオブジェクトをかえすときに、
function foo() {
return new Bar();
}
foo()->baz();
みたいな関数呼び出しはできないんでしょうか?
なんか文法エラーって怒られるんですが…
PHP4です
0183nobodyさん
2006/02/22(水) 16:41:47ID:???一気に萎える('A`)
> 数学とか英語は偏差値90越えは普通でした
そいつは尋常じゃない数値だね。
英文で書かれた参考書の方が君にはあってるっぽいよ。
それと
if (($file)!="^?..*"){
の"^?..*"はマッチパターンであってereg関数なり使わないと。
ピリオドが2つ続いているのは良く分からないけどね。
0184nobodyさん
2006/02/22(水) 16:43:18ID:???全国テストとかなら満点とっても取れないよなぁ。
0185nobodyさん
2006/02/22(水) 16:44:48ID:???Perlなら if($file =~ /^\..*/) でいけるな。
あと、^\..* の正規表現の意味が分からないって、お前の方がやばくないか?
まぁ、後半の .* は別に要らないと思うけどさ。
0186nobodyさん
2006/02/22(水) 16:52:38ID:???嵐のように書き込んで、風のように去っていったって感じですね…
>>176
>言語を学ぶのには、英語と同じで、まずは実際の例文にいっぱい触れるのが一番
間違ってはいないと思うけど、君、例文とか無視だろ。
例文どおりにやって、どうやったらそんな正規表現マッチが書けるんだか???
ネット上の例文の多くは文責の無い物が混じった玉石混交
その中から正確な情報を適切に拾い出すにも基礎知識が必要になるでしょ。
その基礎知識を身につけるのに書籍とかマニュアルがイイよ、と言われても、
本が読めないとか、言って聴く耳持たず。
終いには、悪態ついて去っていくマナーの悪さ。
>>177もバカだけど、3年も2ch見ていて、煽りにいちいち反応するなよ。
0188182
2006/02/22(水) 16:56:43ID:???…なぜ?
意味解らん。
普通にプログラミング言語を設計(というかBNF)すれば、
半自動的に出来るようになりそうなもんですが…
0190nobodyさん
2006/02/22(水) 16:58:52ID:???いやいや、正規表現の意味が分からないんじゃなくて
このケースでは不要じゃないかな?と思って書いただけだよ。
0192182
2006/02/22(水) 17:02:47ID:???ボスにかけあってPHPから脱出します
ちなみに5では可能でしょうか?
0193nobodyさん
2006/02/22(水) 17:03:41ID:???くだらない質問スレ行き確定ってことでいーんじゃないか。
0196nobodyさん
2006/02/22(水) 17:18:44ID:???確かにはためーわくだが効率はいいかもしれんなwwww
0198nobodyさん
2006/02/22(水) 17:38:12ID:???0199nobodyさん
2006/02/22(水) 17:45:28ID:???0200nobodyさん
2006/02/22(水) 17:53:06ID:???http://pc8.2ch.net/test/read.cgi/php/1139746974/
へ行ってくれ。
0202nobodyさん
2006/02/22(水) 19:27:31ID:???ここが参考になると思います。
ttp://www.doyouphp.jp/php5/php5_object.shtml
0203nobodyさん
2006/02/22(水) 19:30:48ID:???周囲の人間をもう一度よく見渡してみましょう。
空気読むのってなかなか難しいことですよ
ただし、>>177も空気読んでないように思えますが。
0205nobodyさん
2006/02/22(水) 20:24:32ID:???0206nobodyさん
2006/02/22(水) 20:34:50ID:???0207nobodyさん
2006/02/22(水) 23:05:14ID:???0208nobodyさん
2006/02/22(水) 23:19:25ID:???中を傷つける恐れあり。
0210nobodyさん
2006/02/23(木) 00:00:56ID:???0211nobodyさん
2006/02/23(木) 00:11:24ID:???0213nobodyさん
2006/02/23(木) 01:11:56ID:???$DB->getRow($sql); の結果のインデックスが数値のものと文字列のものが二重で
出てくるのですが、文字列インデックスのものだけにする方法はありますか?
0214nobodyさん
2006/02/23(木) 01:55:13ID:???文字列にキャストする。
$result = (string)$src;
もしくは関数を利用する。
strval ($src);
これ使えるか知らんけど、
settype ($src, typename);
typenameは文字列で"string"にすると文字列を返す。
一応マニュアル見てくれ。
0215nobodyさん
2006/02/23(木) 02:55:24ID:???事前に
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
でモードを設定
>>214
何の話だそりゃ
0216nobodyさん
2006/02/23(木) 03:37:31ID:???サンスコ!でけた!
直前だとこれでもいける
$DB->SetFetchMode(ADODB_FETCH_ASSOC);
0217156
2006/02/23(木) 04:47:14ID:???ereg!!!
こんな表現をいちいち使わないといけないのですね。
ちょっと戸惑いを感じましたが俺様のスキルの高さのためか、
おまいらのせいかよくわからんけどなんとかやりたいことが
できるようになりましたよ!!!
<現在のディレクトリ内のファイルとディレクトリを
まるでApacheのFancyIndexのように一覧表示する。
ただし「.」(ピリオド)で始まるファイルorディレクトリは表示しない>
<?php
//open directory
$dir=@opendir(".") or die("failed to open the directory");
while($file = readdir($dir)) {
if ( !ereg ( "^¥.", $file)) {
echo '<LI><A HREF="' . $file . '">' . $file . "</A>¥n";
}
}
closedir($dir);
?>
0218156
2006/02/23(木) 04:51:31ID:???の実際のphpサンプル出力がこちら。
ttp://oresama.hopto.org/~sheel/phptest/directory.php
あとはそれぞれのファイルの最終変更日と何キロバイトか、
って情報もいっしょに表示させたいね。
SSIではlsを使って↓のようなところまではできたんだけどね。
ttp://oresama.hopto.org/~sheel/index.shtml
phpではやはりファイル容量とか最終変更日とかまで表示させるのは
無理難題なのでしょうか?
とにかくおまいら役立たずにわざわざ聞く前に
とりあえず自分で調べてみますね。
0220nobodyさん
2006/02/23(木) 05:20:28ID:???ありがとうございまし!
なんとかできますたね!
おれさまのスキルだよ!
ttp://oresama.hopto.org/~sheel/phptest/directory.php
PHPってのはbashと違って
・echoのあとにただ以下のように羅列していくだけでいい(下記参照)
・>とか、<とかをエスケープする必要がない
・エラーが起こるとブラウザ上で何行目がエラーか表示してくれる
っていう利点がてんこ盛りですね。
ますますphpにのめり込んでしまいそうです。
echo '<LI><A HREF="' . $file . '">' . $file . "</A> " . sprintf("%u", filesize($file)) . " " . date ("F d Y H:i:s",filemtime($file));
0221nobodyさん
2006/02/23(木) 05:21:25ID:???ttp://oresama.hopto.org/~sheel/phptest/bbs/gazou.php
どんどん書き込んでね。
0222nobodyさん
2006/02/23(木) 07:00:21ID:???きもいな
0224nobodyさん
2006/02/23(木) 07:41:22ID:???0225nobodyさん
2006/02/23(木) 08:06:23ID:???荒れるんだって。
0227nobodyさん
2006/02/23(木) 10:39:12ID:???0229nobodyさん
2006/02/23(木) 11:31:15ID:???0230nobodyさん
2006/02/23(木) 11:32:08ID:cRiHYjaVそれを作って保存してくれる関数って無いでしょうか
0231nobodyさん
2006/02/23(木) 11:34:22ID:NhHoHXRnSQLのinsert文やupdate文を用いてテーブルを更新
insert into テーブル名 (名前) values ('値') //自分の例
このような場合、「値」の部分に「'」が入っていると(例:TE'ST)実行に失敗するのですが
よい回避方法はありますでしょうか?
htmlentities($name, ENT_QUOTES);で文字を変換してやってみましたが出来ませんでした
0233nobodyさん
2006/02/23(木) 11:47:54ID:???もし板違いスレ違いだったら誘導していただけると助かります。
PHP5でSimpleXMLを使ってXHTMLファイル処理したいのですが、
どうも <html> 要素に xmls="http://www..." を指定すると、xpath()でノードを取得できなくなってしまいます。
xmlns 属性をまるごと消すと、目的のノードを取得できるようになります。
なぜ xmlns を指定すると取得できなくなるのか、原因と対策をご存知でしたら回答お願いします。
-----------------------------------------------------
【src.html】(このXHTMLの <html> 要素から xmlns を削除するとちゃんと取得できます)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>テスト</title>
</head>
<body>
<div id="nullpo">
ぬるぽ
</div>
<div id="ga">
ガッ
</div>
</body>
</html>
【test.php】
$sxml = simplexml_load_file('./src.html');
$xpath = "//div";
$res = $sxml->xpath($xpath);
var_dump($res[0]);
0236nobodyさん
2006/02/23(木) 13:50:14ID:cRiHYjaVありがとうございます
0237221
2006/02/23(木) 14:05:43ID:???あ、すみません。全くその通りですた・・・ooorz
ttp://oresama.hopto.org/~sheel/phptest/bbs/gazou.php
このBBSはまんま「レッツPHP」さんの秀逸なBBSを
そっくりそのままの形で設置してみましたのです。
これをわたしがつくったかのように書いてしまったのはすみませんでした。
わたしはただ、PHP例文に多く触れることにとにかく主眼を置いていますので
とりあえず設置してみただけです。
設置、とひとことで言っても、これを行うにはMacOSXの
Terminalを使用してchmodコマンドを駆使したり、
mkdirコマンドを駆使したり、割と様々なテクニックが必要であり
1年前のわたしではまったくできなかったことでした。
とにかく「今そこにあるPHPプログラム」を少なくとも
「設置」くらいはできるようになった、と感動すら覚え、
まるでこどもが親に「ほら、ボク、こんなことができたYO!」
と言っているかのような錯覚に陥っていたのも事実でした。
0238nobodyさん
2006/02/23(木) 14:08:14ID:???データベースの作成?流用?も楽々っぽい印象を思っています。
PHPのデータベースとの親和性を前面に打ち出して、
「署名をつのるためのPHPブログラム」
をつくってみたいと思います。
今、具体的に頭に描いているのは、
名前
所属
メールアドレス
コメント
というのをそれぞれ入力してもらい、
[投稿する]ボタンをクリックすると投稿される、というものです。
これはまんまBBSの形に似ているので、BBSを動かすPHPプログラムを
ちょちょっとせせるだけでなんとかならないかなぁと思っています。
もしなにかアドバイスがありましたらひとことだけでもよろしくお願いします。
0239nobodyさん
2006/02/23(木) 14:50:33ID:???mysql_real_escape_stringかmysql_escape_string
どちらがいいかはマニュアル調べれ
0240nobodyさん
2006/02/23(木) 15:14:06ID:???これからも、ここに書き込むのなら、
名前を固定にしてトリップをつけると幸せになれると思いますよ。
3年も2chに馴染まれているので、今更でしょうけど、
念のため、名前欄で「俺様#hogehoge」とかであなただけのトリップが持てますからね。
是非。
0241皮先くん ◆N3i.Qu1SoY
2006/02/23(木) 15:42:12ID:???これでいいですか?
ではさっそく。
>>238
を実現するためには、php超ド初心者の俺としては
まず、軽いステップを踏む必要があると思い、
ここを参考にして<form>からPOSTで受け取るスキルを更新しようと
しています。
ttp://php.dori-mu.net/news.html
全くこの通りにやっているのですが、
どうにもうまくうごきません。
まず、
ttp://oresama.hopto.org/~sheel/phptest/news/newspost.php
これをやると、「hogehogeのように書き込まれました」
と表示されるはずなのですが、そうはなりません。
news.batへの書き込みがうまくいってないような感じです。
パーミッションの問題かな、と思ってnews.batは
「だれでも書き込み可」にしてみましたがダメですた・・・orz
どうしたらいいのでしょうか?
0242皮先くん ◆N3i.Qu1SoY
2006/02/23(木) 15:48:29ID:???このように
ttp://oresama.hopto.org/~sheel/phptest/news/
news.datとnewspost.phpとprintnews.phpは同じディレクトリ内に
存在しています。
あと、エディタを使ってnews.datに1234と一行書き込むと、
printnews.phpは正常に動作するようです。
ttp://oresama.hopto.org/~sheel/phptest/news/printnews.php
なぜ>>241のnewspost.phpがうまく動作しないのか、
ヒントだけでも教えていただけると助かります。
0243nobodyさん
2006/02/23(木) 16:19:18ID:???0244皮先くん=241=242 ◆N3i.Qu1SoY
2006/02/23(木) 16:53:38ID:???スキルアッププロジェクトは遅々として止まったままです。
news.batへの書き込み自体はどうもうまく行っているようです。
なぜかというと、if分岐を削除すると
ちゃんと[]のnullが書き込まれているからです。
問題の根源は、formからsubmitとcontentsを
postしてないか、postされているのに受け取れない、
のどちらかかと思われます。
apacheの設定でformからのpostを有効にする、って設定が
あったりするんですかね・・・。で、それが無効になっている、と。
ちょっとその辺をひとりで調べてみますね。
0245nobodyさん
2006/02/23(木) 16:54:04ID:???0247皮先くん=241=242 ◆N3i.Qu1SoY
2006/02/23(木) 17:17:49ID:cy2LQUXfIDを出さない行為がよくない行為だというのは初めて知りました。
これからはIDもトリップも露出して正々堂々と闘うことを誓います。
>>244
の続きの話ですが、
どうもapacheは最初からpostとかgetとかサポートしているみたいですね。
というか世の中ほとんどGETなどの世界でWWWが存在しているっていうかw
う〜む、原因がわからない。
誰も教えてくれないようなのでひとりで悩むより
次の課題に取り掛かりたいと思います。
課題を思いついたらまた書き込みますね。
誰かが課題を出してくれても大歓迎です。
PHPのスキルの更新が目的ですので。
0248nobodyさん
2006/02/23(木) 17:22:49ID:???0250nobodyさん
2006/02/23(木) 17:47:28ID:???ありがとうございます
一応自力でどうにかする方法も見つけたのですが、こっちの方がスマートそうです
4.3以降はmysql_real_escape_string
それ以前はmysql_escape_string
を使うようです
0252nobodyさん
2006/02/23(木) 17:48:47ID:???0253nobodyさん
2006/02/23(木) 17:59:57ID:???0254nobodyさん
2006/02/23(木) 18:10:22ID:QpcRsDDOUTF-8でPHPなども組んできたいと思います。
sjisだとsubstr関数が上手くいかないなどの問題点を聞いた事はありますが、
URF-8の問題点などございましたら教えてください。
ちなみに、現在はEUCを使用しております。宜しくお願いします。
0255nobodyさん
2006/02/23(木) 18:14:23ID:cy2LQUXf皮先はちょうど太陽のような存在だろう。
あぽーんさせないためには普通はトリップをつけないことを
考える(=北風)が、皮先は太陽のように
自分からあぽーん設定を解除させる術に長けている。
>>251
>そんなこと言っちゃったら名無しに戻っちゃうだろ
それを敢えてせずに真っ向勝負が皮先クオリティ。
いつしか皮先のハイクオリティな書き込みを見たくて
透明アポ〜んを外したくなる、それが皮先。
0257nobodyさん
2006/02/23(木) 18:42:06ID:???ここの回答者全員バカじゃんwwwwwwwwww
0258nobodyさん
2006/02/23(木) 18:48:56ID:???か
0259nobodyさん
2006/02/23(木) 18:56:29ID:???書き込む人間が愚かだったからとしか言いようが無い。
0260nobodyさん
2006/02/23(木) 20:09:16ID:???0261nobodyさん
2006/02/23(木) 20:14:14ID:???Unicodeから他の文字セットに変換する際に
その変換テーブルが統一されてないので、
文字の一部で変換に環境による違いが発生する。
0262nobodyさん
2006/02/23(木) 23:19:47ID:???function hoge(){//本当はもっと複雑です。
$a = 'hoge';
}
echo $a;
みたいなことがやりたいのですが、出来ませんでした。
逆はglobalで出来るのですが、このパターンは分かりませんでした。
ご存じの方教えてください。
0264nobodyさん
2006/02/23(木) 23:51:45ID:???0265nobodyさん
2006/02/23(木) 23:54:03ID:???ヒント:http://jp2.php.net/manual/ja/ref.datetime.php
0266nobodyさん
2006/02/24(金) 00:57:31ID:???0267nobodyさん
2006/02/24(金) 01:03:46ID:???自分の質問が下らないかどうか分かるレベルならこのあたりの質問はしない
つまり質問者にどうこう言ってもねぇ・・
0268nobodyさん
2006/02/24(金) 01:18:16ID:???世の中の質問はみんなくだらなくないと思う。
ぶっちゃけ、くだ質の中でも最低ランクの質問だと思うぞ >>264
0269nobodyさん
2006/02/24(金) 01:40:17ID:???0270nobodyさん
2006/02/24(金) 01:49:26ID:???0271nobodyさん
2006/02/24(金) 02:33:27ID:???「そんな下らない質問するな」とでも書くか?
0272nobodyさん
2006/02/24(金) 04:09:55ID:???となっている動的に返される配列を
array('3','7')
のように変換したいのですが、どうするのがスマートですか?
foreachで展開してまた、配列を作るという頭の悪そうなアルゴリズムしか浮かばないです
orz...
■ このスレッドは過去ログ倉庫に格納されています