【PHP】下らねぇ質問はここに書き込みやがれ 45
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2007/05/12(土) 16:42:48ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0859853
2007/06/07(木) 22:38:23ID:???>>856 わかりました。自分でもよくわからないまま質問しました。もっとたくさん書いてからですね。
>>857 わかりました。というか、わからないんですが、多重継承が糞と呼ばれてることだけは、
おぼえておきます。
皆さん、どうもありがとうございました。どんどん書いてみます。
0860853
2007/06/07(木) 22:40:41ID:???どうもありがとうございました。気持ちを分かっていただいた上で
気にしないでいいということなので、気にせずにどんどん進めていきます。
ありがとうございました。PHPは面白いですね。Cだと、コンソール画面に向かって
短いプログラムを作ってるだけなんで。
みなさん、ありがとうございました。
0861nobodyさん
2007/06/07(木) 23:40:16ID:???クエリの文法間違ってるしGETじゃactionでパラメータは渡せん。
<input type="hidden"〜をパラメータ分作ってvalueに指定する。
>>853
インターフェイスはクラスメソッドの仕様書みたいなもんだが…。
組み込みインターフェイスを実装して
http://www.php.net/manual/ja/language.oop5.iterations.php
こんな風にオブジェクトをforeachとかで使えるようにしたりとか…。
しかしPHPでは使う機会はほとんどないかな?
まぁOOPは確かに勉強しようとするよりも
組んでいって使う場面に出会った時、こんな素敵な機能が、と気付くような物だからね。
0863nobodyさん
2007/06/08(金) 01:15:57ID:YM7YDoyYにしてると、注意で「Notice」が表示されるけど、
表示されるようにしておいたほうがいいのかな?
それとも、Noticeくらいならぜんぜん問題ないのかな?
0864nobodyさん
2007/06/08(金) 01:24:20ID:rQuqM37d初めて読ませていただきましたが、みなさん面白いですね。
私も仕事でPHP等使ってますが、この掲示板のところどころに
見覚えのある単語がかかれていたので、つい最後まで読んでしまいました。
私の環境では、PHP3,4,5サーバーが混在するので、怖くてクラスの機能は超基本的な部分しか使ってません。
多重継承... 試したことがありません。(おそらく動くでしょうけど・・・)
0865nobodyさん
2007/06/08(金) 01:25:52ID:???0866nobodyさん
2007/06/08(金) 01:39:02ID:rQuqM37d4〜5年前のもの。
各種2〜3バージョン前のもの。
ほとんどが手続き型で保守がしんどい・・・。
ざっくり再構築したいのだが・・・
ま、明日もがんばります。では!
0867nobodyさん
2007/06/08(金) 02:11:49ID:???【PHP】下らねぇ質問はここに書き込みやがれ 46 (前スレ)
http://pc11.2ch.net/test/read.cgi/php/1178955837/
【PHP】下らねぇ質問はここに書き込みやがれ 45 (ここ。実質 47)
http://pc11.2ch.net/test/read.cgi/php/1178955768/
【PHP】下らねぇ質問はここに書き込みやがれ 47 (次スレ?実質 48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/
だったっけ?
0869nobodyさん
2007/06/08(金) 07:02:43ID:YM7YDoyYだよね、一番良い対策はそれだよね・・・
if($_POST['check']){
でNoticeが出るんだけどなんでだろ
結構この書き方使うのに・・・
0870nobodyさん
2007/06/08(金) 07:24:41ID:???0871nobodyさん
2007/06/08(金) 07:28:12ID:???未定義の変数を評価しようとしてるからだよ
外から来た変数が空か、定義されてるか調べるには
empty($_POST['check'])とかisset($_POST['check'])
0872nobodyさん
2007/06/08(金) 07:43:07ID:???Fatalばっかし
0873nobodyさん
2007/06/08(金) 07:54:36ID:???0874nobodyさん
2007/06/08(金) 07:55:44ID:???初心者が間に受けるからオマイラ適当なこというな
0875nobodyさん
2007/06/08(金) 08:29:03ID:???多重継承はできないけど、合成関数で多重継承ライクなことはPHPでもできるよ。
0876nobodyさん
2007/06/08(金) 11:05:51ID:???> <form action=\"page3.php="..$_GET['・・・・
というか
<form action=\"page3.php?".$_GET['・・・・
じゃ。
0877nobodyさん
2007/06/08(金) 11:14:27ID:???二重でコードではなく一度だけデコードしたいのですが。
0878nobodyさん
2007/06/08(金) 11:34:03ID:???0881nobodyさん
2007/06/08(金) 11:55:24ID:???$a = 0;
$htemp = array("35.0","35.1","35.2","35.3","35.4","35.5","35.6","35.7","35.8","35.9",
"36.0","36.1","36.2","36.3","36.4","36.5","36.6","36.7","36.8","36.9",
"37.0","37.1","37.2","37.3","37.4","37.5","37.6","37.7","37.8","37.9",
"38.0","38.1","38.2","38.3","38.4","38.5","38.6","38.7","38.8","38.9",
"38.0","39.1","39.2","39.3","39.4","39.5","39.6","39.7","39.8","39.9",
"40.0","40.1","40.2","40.3","40.4","40.5","40.6","40.7","40.8","40.9",
"41.0","41.1","41.2","41.3","41.4","41.5","41.6","41.7","41.8","41.9",
"42.0","42.1","42.2","42.3","42.4","42.5","42.6","42.7","42.8","42.9",);
print("<select name=htemp><option>");
while($a < 80) {
print("<option>$htemp[$a]");
$a++;
}
print("</option></select>");
?>
もっとスマートに記述する方法、教えて偉い人
0882nobodyさん
2007/06/08(金) 12:01:16ID:???入ってくるデータが
URLエンコ*2
URLエンコ
の二種類あり前者ならURLエンコを、後者なら元の文字列を得たい、ということです。
0883nobodyさん
2007/06/08(金) 12:01:46ID:???$htemp = array("35.0","35.1","35.2","35.3","35.4","35.5","35.6","35.7","35.8","35.9",
"36.0","36.1","36.2","36.3","36.4","36.5","36.6","36.7","36.8","36.9",
"37.0","37.1","37.2","37.3","37.4","37.5","37.6","37.7","37.8","37.9",
"38.0","38.1","38.2","38.3","38.4","38.5","38.6","38.7","38.8","38.9",
"38.0","39.1","39.2","39.3","39.4","39.5","39.6","39.7","39.8","39.9",
"40.0","40.1","40.2","40.3","40.4","40.5","40.6","40.7","40.8","40.9",
"41.0","41.1","41.2","41.3","41.4","41.5","41.6","41.7","41.8","41.9",
"42.0","42.1","42.2","42.3","42.4","42.5","42.6","42.7","42.8","42.9",);
print("<select name=htemp><option>");
foreach($htemp as $v) {
print("<option>$v</option>");
}
print("</select>");
?>
0885nobodyさん
2007/06/08(金) 12:07:41ID:???もっと、シンプルに記述するにはどうすればいいですか
0887nobodyさん
2007/06/08(金) 12:20:43ID:???0889nobodyさん
2007/06/08(金) 12:25:52ID:I6Gynhm5これでいいですか
0891nobodyさん
2007/06/08(金) 12:28:50ID:???0892nobodyさん
2007/06/08(金) 12:31:41ID:???あんなコードでも使えるので、もういいですよ
では、
0893nobodyさん
2007/06/08(金) 12:32:48ID:???0894nobodyさん
2007/06/08(金) 12:34:17ID:???for($i = 35; $i < 43; $i += 0.1)
とか、PHP5以上なら
range(35,43,0.1)
とか。
0896nobodyさん
2007/06/08(金) 12:47:27ID:???"%" を urlencode すると、 "%25"になるよな?
で、"%25" をurlencodeすると "%2525"になる。
ここで、"%2525"が与えられたときに、
これが"%"を2重エンコードしたものか、"%25"を一回エンコードしたものか
どうにかして判断できないかってこと?
入力データ依存のヒューリスティックな推測以外ないだろうね。
0897nobodyさん
2007/06/08(金) 12:58:32ID:???URLエンコ*2→「前者ならURLエンコを」
URLエンコ→「後者なら元の文字列を」
でしょ。
2回エンコード後が %2525 → %25 (元は "%")
1回エンコード後が %2525 → %25 (元がこれ)
0899nobodyさん
2007/06/08(金) 13:15:16ID:???「そもそもはFORTRANでどーたらこーたら」とか言う話を聞いた記憶が。
0901nobodyさん
2007/06/08(金) 13:48:29ID:???0902nobodyさん
2007/06/08(金) 13:55:39ID:???0904nobodyさん
2007/06/08(金) 14:37:45ID:???0905nobodyさん
2007/06/08(金) 14:45:02ID:Xs31IcmGを10文字単位で区切り文字を入れたいのですが
どうやらばいいのでしょうか?
0906nobodyさん
2007/06/08(金) 15:02:23ID:6ggljLpp百億 * 百億 の結果を整数で表示したいのですがどうしたらいいのでしょうか?
0907nobodyさん
2007/06/08(金) 15:10:15ID:???どっちでも問題なくPHPでMySQL使える
>>905
マルチバイトの文字列関数使えばできるのかもしれないけどざっと見た感じではよう分からん。
forで回したほうが早いかも
>>906
http://jp2.php.net/manual/ja/ref.bc.php
0908nobodyさん
2007/06/08(金) 15:20:48ID:JzH9jcRmクラスの利点は再利用って言うけど
ユーザー関数郡をインクルードしたって同じじゃないの?
別に中の変数名違うのでもグローバルしなきゃ大丈夫だし
0910nobodyさん
2007/06/08(金) 15:25:31ID:6ggljLppありがとうございます。
echo bcmul(bcmul('10000000000', '10000000000'), bcmul('10000000000', '10000000000'));
で百億の四乗とかやってみたかったのです。
もう少し見やすくする方法はないですよね?
0912nobodyさん
2007/06/08(金) 15:44:38ID:Xs31IcmGありがとうございます
とりあえず以下を作って対応しました
$test = "abcdefvhijklmnopqrstuvwxyz0123456789あいうえおかきくけこさしすてそ";
echo hohoge($test,",",10);
function hohoge($text="",$key="",$limit=100){
$max = $start = 0;
$temp = array();
if($text=="" && $limit < 0){
return false;
}
$max = mb_strlen($text);
while($max > $start){
$temp[] = mb_substr($text,$start,$limit);
$start += $limit;
}
return implode($key,$temp);
}
0914nobodyさん
2007/06/08(金) 15:57:07ID:???それがそもそもの間違い。
よくクラスはその書き方から名前空間の付いた関数群のようなものと思われがちだが、
クラスは関数よりの概念ではない。
クラスとは型であって構造体とかもっと言ってしまえばスカラー型に近いもの。
クラスの再利用っていうのは処理の再利用ではなく型の再利用。
メソッドはクラスメンバを操作するためにある。
フィールドとメソッドを内包してカプセル化することにより、
それが一つの物として機能することに価値がある。
火打ち石で何かに火を付けるよりライター1つみたいな。
とまぁ長々書いたがとりあえずクラスとは関数群ではなく型であるということを覚えておいてほしい。
0915nobodyさん
2007/06/08(金) 16:17:15ID:ORXPTs1EWEB上のサンプルファイルを試してたら上記のようなエラーがでましたが
どのような意味みなるのでしょうか?
0916nobodyさん
2007/06/08(金) 16:21:18ID:???どうせ ;か } あたりがぬけてんだろ
0918nobodyさん
2007/06/08(金) 16:31:55ID:ORXPTs1Eありがとうございます
0920nobodyさん
2007/06/08(金) 17:11:03ID:HgwodoIy$encode = 'Shift_JIS';
$delimiter = '/';
$limit = 16;
$str = mb_substr($test, 0, $limit, $encode);
for ($i = $limit; $i < mb_strlen($test, $encode); $i = $i + $limit){
$str .= $delimiter.mb_substr($test, $i, $limit, $encode);
}
echo $str;//abcdefvhijklmnop/qrstuvwxyz012345/6789あいうえおかきくけこさし/すてそ
--
ちょっと前に自分で書いたのはこんな感じ
あとマルチバイト関数使うときはエンコードちゃんと指定した方がよかよ
0921908
2007/06/08(金) 17:43:33ID:JzH9jcRmあー
税金というクラスがあったとして
このオブジェクトはお金を計算する型です。
この中に格納して、いろんなメソッドを指定すれば
所得税や手取り金など、簡単に取り出せます
みたいな?
0922nobodyさん
2007/06/08(金) 18:14:44ID:au/61P4HUTF-8で書いているなら、 preg_replaceを使って簡単に書けます。
$string = 'abcdefvhijklmnopqrstuvwxyz0123456789あいうえおかきくけこさしすてそ';
$string = preg_replace('/(?:^|\G)(.{10})/u', '${1};', $string);
0923nobodyさん
2007/06/08(金) 18:55:15ID:Xs31IcmGありがとうございます
文字コード指定するようにしました
>>922
残念ながらUTF-8ではなくEUC-JPです
なので今回は利用できそうにありません
しかし次回機会があったら是非使わせていただきます
ありがとうございます
0924nobodyさん
2007/06/08(金) 20:13:13ID:rQuqM37dよくできたマニュアルだ〜。
私もこの手の文字列操作をよくしてるが、FreeBSD, PHP (.configure -enable-mbstring のみのような) 環境では、
EUC-JP以外の文字の取り扱いは、たまにお手上げのような状況にはまることがあるな〜。
0925nobodyさん
2007/06/08(金) 20:56:58ID:rQuqM37dfor ($i=1; $i<=mb_strlen($test); $i++){
$string.=mb_substr($test, $i,1);
if ( ($i%10) == 0 ) {
$string.="/";
}
}
echo $string;
かな〜。
0926nobodyさん
2007/06/08(金) 21:01:58ID:???アルファベットを順番に表示させたいのですが…
< a href="hoge.html?$search=A">A行</a>
0927nobodyさん
2007/06/08(金) 21:02:43ID:SfnUwTBh<a href="hoge.html?$search=C">C行</a>
<a href="hoge.html?$search=D">D行</a>
とリンクを作りたくて…
0928nobodyさん
2007/06/08(金) 21:03:11ID:???なんでくだ質系のスレは回答する人も初心者さんばかりなの?
0929927
2007/06/08(金) 21:11:45ID:SfnUwTBh$abc = "A";
for($i=1; $i < 27; $i++) {
echo '<a href="?alphabet='.$abc.'">'.$abc.' </a>';
$abc++;
}
?>
そんなアホなと思いつつこれでできちゃうんですね…
でも小文字は変換するしかないのかな
0930nobodyさん
2007/06/08(金) 21:15:34ID:rQuqM37d0931nobodyさん
2007/06/08(金) 21:16:05ID:???for($i=65;$i<91;$i++){
echo '<a href="hoge.html?search='.chr($i).'">'.chr($i).'行</a>'."\n";
}
0932nobodyさん
2007/06/08(金) 21:21:21ID:rQuqM37dさすがですね。
0934nobodyさん
2007/06/08(金) 21:35:22ID:8TLyKZoa$user_arr = array(
1 => array('1','pop','0'),
2 => array('2','red','1'),
3 => array('3','dream','1'),
4 => array('4','braian','0'),
5 => array('5','boy','0'),
6 => array('6','test','0')
);
この$user_arr配列を pop,red,dream...の項目でソートすることは
出来ないでしょうか?
0935nobodyさん
2007/06/08(金) 21:45:29ID:/7xjylPausort()
0936nobodyさん
2007/06/08(金) 21:54:03ID:???$user_arr = array(
1 => array('1','pop','0'),
2 => array('2','red','1'),
3 => array('3','dream','1'),
4 => array('4','braian','0'),
5 => array('5','boy','0'),
6 => array('6','test','0')
);
function cmp($a,$b){
return strcmp($a[1],$b[1]);
}
usort($user_arr,"cmp");
echo print_r($user_arr);
0937nobodyさん
2007/06/09(土) 03:12:26ID:???0938nobodyさん
2007/06/09(土) 03:13:06ID:???0940nobodyさん
2007/06/09(土) 11:39:16ID:???$hoge[0]['value'] = "シー";
$hoge[1]['name'] = "A";
$hoge[1]['value'] = "エー";
$hoge[2]['name'] = "B";
$hoge[2]['value'] = "ビー";
上のような配列 $hoge を $hoge[$i]['name'] の名前順に並べ変えたいのですが
どうすればよいでしょうか?
つまり
$hoge[0]['name'] = "A";
$hoge[0]['value'] = "エー";
$hoge[1]['name'] = "B";
$hoge[1]['value'] = "ビー";
$hoge[2]['name'] = "C";
$hoge[2]['value'] = "シー";
のように変更したいと考えています
0942nobodyさん
2007/06/09(土) 12:22:29ID:j2tEU2ddmbstring.http_output = SJIS
この設定のとき、EUCで作成したファイルはSJISの問題に関する対処を入れておくべきでしょうか?
0943nobodyさん
2007/06/09(土) 12:23:08ID:???多くのFTPクライアントみたいに
改行コードを自動的に書き換えるようにしたいのですが、
普通にstr_replaceあたり使ってシコシコするしかないですかね?
なんか簡単な方法ないでしょうか。
改行コードの識別時点でかなりだるそうなのですが。
0944nobodyさん
2007/06/09(土) 12:39:41ID:???\r\n に統一 preg_replace("/(?<!\r)\n|\r(?!\n)/", "\r\n", $str)
0945nobodyさん
2007/06/09(土) 12:42:04ID:???<?php
$hoge[0]['name'] = "C";
$hoge[0]['value'] = "シー";
$hoge[1]['name'] = "A";
$hoge[1]['value'] = "エー";
$hoge[2]['name'] = "B";
$hoge[2]['value'] = "ビー";
foreach ($hoge as $key => $row) {
$name[$key] = $row['name'];
}
array_multisort($name, $hoge);
print_r($hoge);
かな
それかユーザ関数作る
0947nobodyさん
2007/06/09(土) 20:43:27ID:RIHYcObC""や''内は検索の対象外としたいです。
どうすれば可能でしょうか?
0948nobodyさん
2007/06/09(土) 22:00:20ID:fw4XPRkliモードhtmlシュミレーターで
http://localhost/bbs.php
にアクセスしようとしても接続出来ません。と出るのですが、
どうしたらよいでしょうか?
WindowsでApacheを使っています。
0949nobodyさん
2007/06/09(土) 22:17:11ID:???何がしたいのか、漠然としすぎてて答えにくいが、PHPの中で検索したいのか?
タグ内の文字列を検索条件から取り除きたいのなら、まずstrip_tagsした後に、抽出するとか
0950nobodyさん
2007/06/09(土) 22:25:35ID:???スレ違い
まず適当なindex.htmlを作って設置してみて、
http://localhost/index.htmlに繋がるか試せ。どうせ繋がらないはず。
0951nobodyさん
2007/06/09(土) 22:28:58ID:fw4XPRkl先ほどの質問をした者ですが、
繋がらない理由を教えていただけませんか?
インターネットエクスプローラーなら繋がるのですが、
0953nobodyさん
2007/06/09(土) 22:35:39ID:???0954nobodyさん
2007/06/09(土) 22:39:26ID:fw4XPRkl先ほど質問した者ですが、localhostの意味がわからないので説明してくれませんか?
0955nobodyさん
2007/06/09(土) 22:39:33ID:???0956nobodyさん
2007/06/09(土) 22:40:40ID:???http://www.google.co.jp/search?q=localhost%E3%81%AE%E6%84%8F%E5%91%B3&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:unofficial&client=firefox-a
0957nobodyさん
2007/06/09(土) 22:41:32ID:???0958nobodyさん
2007/06/09(土) 22:42:55ID:???スレ違いだと言っているけれど。ついでだから教えてあげる。
IEは localhost→ hostsファイルを参照→ 127.0.0.1 (自分自身) と解釈して、自分のPCに繋がるわけ。
どうせi-modehtmlシュミレータは、それを解釈できないだけでしょ。
設定画面か何かに、hostsファイルを参照するとかその辺の設定があるはず。んでそれがOFFになっていて解釈できないと。
だからPHPは全く関係ない。
レス数が950を超えています。1000を超えると書き込みができなくなります。