トップページ⇒php
1001コメント342KB

【PHP】下らねぇ質問はID出して書き込みやがれ 88

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/16(水) 09:39:37ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0478nobodyさん2009/09/30(水) 15:17:52ID:erJ6uHWW
<ul>
<li>リストです</li>
</ul>

というHTMLから「リストです」の部分を抽出したいと思い

preg_match("/<ul><li>(.*?)<\/li><\/ul>/s",$html,$array);

という正規表現を書いたのですが、抽出できません。
見直すとHTMLが改行されていたので、改行を削除したら抽出されました。
しかし、改行する場合・しない場合もあり、両方対応させたいと思います。

上記コードをどのように変更すればいいのでしょうか?
0479nobodyさん2009/09/30(水) 15:25:41ID:???
パターン修飾子にmを追加してみれば?
試してないから間違ってたらsry

preg_match("/<ul><li>(.*?)<\/li><\/ul>/sm",$html,$array);
0480nobodyさん2009/09/30(水) 15:26:58ID:6H2Mywyh
mt_randで$minと$maxに正の値を与えてるのに
返り値に負の値が出るのはなんでだろうorz
0481nobodyさん2009/09/30(水) 15:32:27ID:???
>>479
いくらs付けてもそれじゃ無理だろ
君のパターンでは<ul>と<li>の間に改行がこないパターンになってるんだから

<?php
$html ="
<ul>
<li>リストです</li>
</ul>
";
preg_match("!<ul>.*<li>(.*?)</li>.*</ul>!s",$html,$array);
print_r($array);
?>
0482nobodyさん2009/09/30(水) 15:33:27ID:i3D4XUwa
改行の後ろにゼロ回以上の繰り返しを入れる
\n*
0483nobodyさん2009/09/30(水) 15:34:12ID:???
\ 使うのが面倒なので、こうかな。

preg_match("|<ul>.*?<li>(.+?)</li>.*?</ul>|ms",$html,$array);
0484nobodyさん2009/09/30(水) 15:39:32ID:???
mは不要
04854782009/09/30(水) 15:50:44ID:erJ6uHWW
>>479-484
みなさんありがとうございます。上手くできました。
/を|にして、ulとliに.*を入れれば良いんですね。
勉強になりました。
0486nobodyさん2009/09/30(水) 16:49:42ID:???
パータン内で|を使わないって決めてるならいいけど
デリミタに|は使わないほうがいいよ
#とか!とか&とかそういうほとんど使わないものをデリミタにしな
0487nobodyさん2009/09/30(水) 17:21:38ID:???
英文では #, !, & 出るから使わないのが常識だろ
04884742009/09/30(水) 17:26:12ID:PdAV1SS2
>>477
!!
index.phpからprint $mfl;としても真っ白な理由が分かった・・・
ような気がします。ありがとうございます。
どうやってもダメなので考え方変えました・・・フラグ立てずにアク禁だけの
ルーチンとリンク用ルーチンに分けることにしました。

スレタイ通りに超くだらない質問を最後に。
ページにアクセスした時にユーザーエージェントごとに違う内容を
100回ループで出力する時、
(1)ヘッダ付近でエージェントを取得してFフラグを立てておき、
  ループの所でtrue or falseで出力
(2)ループの所でエージェントを取得してtrue or falseで出力
やはり(2)が効率悪いですか?
ホスト名取得だと負荷がかかるとかなんとか聞き覚えがありますが・・・
0489nobodyさん2009/09/30(水) 17:29:23ID:???
>>488
ホスト名取得はDNSに問い合わせに行くので負荷がかかる
0490nobodyさん2009/09/30(水) 17:34:32ID:???
>>489
エージェントは問題なし?
エージェント取得を一回で済ませるか、100回取得するか・・・
0491nobodyさん2009/09/30(水) 17:49:19ID:???
>>490
UAの取得って$_SERVER["HTTP_USER_AGENT"] 見るだけでしょ?
既に変数として定義されているんだから、フラグ用の変数を見るのと大差無い。
0492nobodyさん2009/09/30(水) 18:01:48ID:2VTuEGW2
【OS名】XP
【PHPのバージョン】php5
【連携ソフトウェア】?
【質問内容】 質問させて頂きます。
現在ウェブサイトを制作しており、cgiを弄っています。
そこで、何度やってもエラーが出るのですが
ご教授お願い致します。

print "Content-type: text/html\n\n";
↑たとえばこういうのだとまったく問題ないです。(当たり前ですが)

print "<!--[if IE 6]>\n";
print "<![endif]-->\n";
↑こういうのがうまくいきません。
多分!や--が悪いと思うのですが・・・
どうすれば<!--[if IE 6]>をprint出来るのでしょうか?

ものすごく初歩的なことだと思うのですが、
検索しても全然それらしいものが出なかったので
どなたかご回答をお願い致します。
0493nobodyさん2009/09/30(水) 18:06:33ID:i3D4XUwa
<!-- hoge -->
が正しい。うしろにも前にも--
0494nobodyさん2009/09/30(水) 18:13:40ID:???
>>492
>>493は何か勘違いしてるのでスルーするとして
コメントだから単にブラウザ表示されてないだけ
ブラウザのHTMLソースを見ればちゃんと出力されてるよ
あとPHPはWebアプリケーション専用に開発されてるのでPerlのように
print "Content-type: text/html\n\n";
みたいのは不要
04954942009/09/30(水) 18:21:21ID:???
ちなみにそのタグの意味を説明するために単に文字列として出力したいというのなら
HTMLで<>を実体参照に置き換えるのと同じ要領でやればいい
0496nobodyさん2009/09/30(水) 18:23:38ID:???
>>492
PHPはデフォルトでHTMLとして出力するのでContent-typeとかは書かなくていい。
これを拡張子phpで保存して動かしてみるといい
--
<h1>
<?php
echo "Hello world";
?>
</h1>
--
明示的にContent-typeを変えたい場合は
header('Content-Type: text/plain');
こんな感じで。
0497nobodyさん2009/09/30(水) 18:35:31ID:???
>>487
|なんて使うのはおかしいだろ
0498nobodyさん2009/09/30(水) 18:56:32ID:???
|をデリミタに使うなら
(a-z|0-9)こういうパターンの時に困るだろ
0499nobodyさん2009/09/30(水) 19:04:05ID:2VTuEGW2
>>494
迅速な回答ありがとうございます。
ブラウザ上で表示されていないのは分かるのですが、
internal server errorがでるのでソースを見ることすら出来なかったのです。

あとprint "Content-type: text/html\n\n"; は不要とのアドバイス
ありがとうございます。

文字列として出力するのもやりたかったので
ご回答嬉しいです。ありがとうございます!
とりあえず実態参照って何か分からないのでググってみます。
ご回答ありがとうございました!

>>496
こちらも迅速な回答ありがとうございます。
今編集しているのは、拡張子が.cgiというファイルです。
0500nobodyさん2009/09/30(水) 19:17:00ID:???
PHPじゃない悪寒
0501nobodyさん2009/09/30(水) 19:29:41ID:???
>>499
phpをApacheモジュールとして動かしてるのではなくてCGIとして動かしてるのか
0502nobodyさん2009/09/30(水) 19:37:46ID:???
環境ないから答えられないがやっぱりCGIとなると!が誤解釈されてるんだろうな
0503nobodyさん2009/09/30(水) 21:46:51ID:AbgTvS5i
【OS名】winXP
【PHPのバージョン】xampp-win32-1.7.2に入っているバージョンで多分最新だと思います。
【連携ソフトウェア】なし。
【質問内容】
http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658
ここにアクセスして、『ピーコック』『目白店』のみの文字列を抽出し表示させるソースを教えて下さい。
よろしくお願いします。
05045032009/09/30(水) 21:51:27ID:AbgTvS5i
<?php
$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658";
$thread = file_get_contents($url);
mb_ereg("会社名</td>\r\n <td width=\"70%\" class=\"tenpo003\">\r\n (\W)", $thread, $matches);
print_r($matches);

ここまで、自分でやったんですけど、うまくいかないんです。
0505nobodyさん2009/09/30(水) 21:57:14ID:???
まず$threadの中に目的のソースを取得できたのか確認した?
05065032009/09/30(水) 22:37:15ID:AbgTvS5i
>>505
はい。 それは↓の実験で確認出来てます。
問題は、正規表現とか検索の関数の使い方がわかんないんです。

<?php
$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658";
$thread = file_get_contents($url); // スレッドの全読み込み
$fp = @fopen("保存.txt", "w");
fwrite($fp, $thread);
fclose($fp);
0507nobodyさん2009/09/30(水) 22:41:00ID:???
>>503
正規表現で1発で抜き出せるとは思うけど自分は苦手なのでこれが精一杯

$list = file("http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658");
$a = array();
for ($i = 0; $i < count($list); $i++) {
 if (preg_match("/<td.*会社名.*?<\/td>/", $list[$i])) {
  $a[] = trim($list[$i + 2]);
  continue;
 }
 if (preg_match("/<td.*店舗名.*?<\/td>/", $list[$i])) {
  $a[] = trim($list[$i + 2]);
  break;
 }
}
print_r($a);
0508nobodyさん2009/09/30(水) 22:44:07ID:???
<?php
$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658";
$thread = file($url);
echo $thread[41];
echo $thread[48];
0509nobodyさん2009/09/30(水) 22:47:08ID:???
>>508
頭柔らかいね
05105032009/09/30(水) 22:54:58ID:AbgTvS5i
>>507
ありがとうございます。しかし、
Parse error: syntax error, unexpected '@' in
というエラーが出ました。
> if (preg_match("/<td.*会社名.*?<\/td>/", $list[$i])) {
この行です。
0511nobodyさん2009/09/30(水) 22:58:00ID:???
そりゃインデントを全角スペースでやってるからだ
コピペしただけじゃ動かない
スペースを消すか半角スペースかタブにおきかえてくれ
0512nobodyさん2009/09/30(水) 23:02:17ID:3aUw1Dx6
質問です

function hogeFunc($hoge1,hoge2){
if($hoge2==1){
$hoge1++;
}
return $hoge1;
}

上みたいな関数を実行するのに
hogeFunc(10); って感じに2つめの引数を指定しなくても動くわけですが
NULLでもいいから指定すべきなんでしょうか? hogeFunc(10,NULL);
糞質問ですみませんがお願いします
0513nobodyさん2009/09/30(水) 23:03:34ID:???
それじゃクリティカルエラーでるでしょ
デフォルト値設定すれば出ないけど
0514nobodyさん2009/09/30(水) 23:04:24ID:???
>>512
function hogeFunc($hoge1, hoge2=NULL){
}

にしとけばOK
05155032009/09/30(水) 23:05:25ID:AbgTvS5i
>>508
どうもです。
>>511
おお、正しく動きました。
ご両人のソースをこれからじっくり分析しようと思います。
有り難うございました。
0516nobodyさん2009/09/30(水) 23:07:32ID:3aUw1Dx6
>>513
そうそう、その問題なんですよ
エラーがずらずらでてきて動いてるのになんで?ってのが始まりで。
「まあ動いてるから良いか」的に思ってたんですが良いわけないですね…

>>514
なるほど、そのデフォルト値の設定ってこういう状況のため(?)にあるんですね

ありがとうございました
0517nobodyさん2009/09/30(水) 23:09:26ID:???
その引数を使わないからnullにしたいってこと?
じゃあ、引数消せよと
0518nobodyさん2009/09/30(水) 23:12:39ID:3aUw1Dx6
いや、たまーに例外的に使われる引数なので。。
ほんとうにありがとう
0519nobodyさん2009/09/30(水) 23:38:17ID:???
汎用クラス自分で書く時によく使うね
05205032009/10/01(木) 05:49:02ID:ZppROofQ
<?php
for ($page = 80; $page < 10000 ; $page++) {
echo $page;
echo "\r\n";
$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=";
$url .=$page;
$thread = file($url);

if (preg_match("/.*東京都.*?/",$thread[62]))
{

$WriteData=$page;
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[41]));
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[48]));
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[62]));

echo $WriteData;

$WriteData2.=$WriteData;
$WriteData2.="\r\n";
};
}
$fp = fopen("スーパー.txt", "w");
fwrite($fp,$WriteData2);
fclose($fp);

こんな感じで東京都にあるスーパーの住所録を全部抜いてやろと思ったのですが、↓みたいに途中で止まってしまいます。
これって、相手のサーバーが規制をかけた、ってことでしょうか?
05215032009/10/01(木) 05:50:36ID:ZppROofQ
80 81 82 83 84 85 86 86,イトーヨーカ堂,ザ・プライス千住店,東京都足立区千住3-287 87,イトーヨーカ堂,立石店,東京都葛飾区立石1-18-388 89 89,イトーヨーカ堂,曳舟店,東京都墨田区京島1-27-390 90,イトーヨーカ堂,戸越店,東京都品川区戸越6-8-2
91 91,イトーヨーカ堂,三ノ輪店,東京都荒川区南千住1-9-192 92,イトーヨーカ堂,ザ・プライス西新井店,東京都足立区興野1-12-793 93,イトーヨーカ堂,高砂店,東京都葛飾区高砂3-12-594 94,イトーヨーカ堂,上板橋店,東京都板橋区常盤台4-26-195
96 96,イトーヨーカ堂,金町店,東京都葛飾区東金町1-10-897 97,イトーヨーカ堂,東村山店,東京都東村山市本町2-2-1998 98,イトーヨーカ堂,府中店,東京都府中市本町1-13-399 99,イトーヨーカ堂,竹の塚店,東京都足立区竹の塚5-17-1100
101 101,イトーヨーカ堂,武蔵境店,東京都武蔵野市境南町2-2-20102 102,イトーヨーカ堂,ザ・プライス滝山店,東京都東久留米市滝山4-13-10103 103,イトーヨーカ堂,小岩店,東京都江戸川区西小岩1-24-1
104 104,イトーヨーカ堂,多摩センター店,東京都多摩市落合1-44105 105,イトーヨーカ堂,綾瀬店,東京都足立区綾瀬3-4-25106 106,イトーヨーカ堂,エスパ昭島店,東京都昭島市田中町562-1107 107,イトーヨーカ堂,四つ木店,東京都葛飾区四つ木2-21-1
108 108,イトーヨーカ堂,東久留米店,東京都東久留米市本町3-8-1109 110 110,イトーヨーカ堂,赤羽店,東京都北区赤羽西1-7-1111 111,イトーヨーカ堂,亀有駅前店,東京都葛飾区亀有3-26-1112 112,イトーヨーカ堂,恋ヶ窪店,東京都国分寺市東恋ヶ窪5-6-3
113 113,イトーヨーカ堂,大井町店,東京都品川区大井1-3-6114 114,イトーヨーカ堂,南大沢店,東京都八王子市南大沢2-28-1115 115,イトーヨーカ堂,八王子店,東京都八王子市狭間町1462-1116 116,イトーヨーカ堂,葛西店,東京都江戸川区東葛西9-3-3
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\xampp\akkun\baka002.php on line 10
0522nobodyさん2009/10/01(木) 05:55:23ID:???
>>521
Fatal error: Maximum execution time of 60 seconds exceeded
を機械翻訳でもしてみろw

ttp://honyaku.yahoo.co.jp/transtext
0523nobodyさん2009/10/01(木) 05:58:20ID:???
>>521
んで
「php Maximum execution time」
とかでググれ
05245032009/10/01(木) 06:01:53ID:ZppROofQ
>>522
機械翻訳したところ、
『上回られる60秒の最大の実行時間』
だそうですが、これはどういう意味でしょうか?
PHPの実行時間が60秒を越えたらダメとか?
05255032009/10/01(木) 06:04:45ID:ZppROofQ
>>523
なんか、設定をいじればいいとか?
つか、もう寝ます。
0526sage2009/10/01(木) 09:29:22ID:XQ4QcZJw
>>525
質問しといて勝手に寝るな
php.iniみとけや
0527nobodyさん2009/10/01(木) 09:45:31ID:???
iniのコメント文読んで設定きちんとやっとけば絶対に出ない問題だね
0528nobodyさん2009/10/01(木) 10:09:23ID:twwty8uP
ちゃんとしたコーディングができるようになるにはどうやって勉強したらいいですか?
クラスわけとか、メソッドわけ?とか。
動くものは作れるし、それなりに勉強してるつもりなんですが、
いまいち自信もてないので・・・
0529nobodyさん2009/10/01(木) 10:29:38ID:???
そこから先は、他人にコードを直してもらうのが一番勉強になる。
他人のコードを読む、でもある程度勉強になるが、優れたコードは読みやすいので良さに気づかずに何気なくスルーしてしまう事が多い。
本で勉強するなら、PHPの本ではなく、OOPの本を読む時期に来ていると思う。
このスレは書かれるコードが断片的すぎて設計レベルの勉強には向かない。
0530nobodyさん2009/10/01(木) 10:32:54ID:???
2ch見るのをやめることかも
0531nobodyさん2009/10/01(木) 10:36:26ID:twwty8uP
>529
レスどうもです。
ちゃんと指摘してくれそうなうな人が回りにいないんですよね・・・(^^;
OOPの本でいいの知ってたら教えてください
0532nobodyさん2009/10/01(木) 11:03:02ID:???
>>531
blogに書いていればそのうち突っ込まれるようになるよ
05335292009/10/01(木) 11:22:34ID:???
>531
『リファクタリング』
『デザイン・パターン』
『コード・コンプリート』
『達人プログラマー』
上から順に、でいいかな。多分値段順、明日から使える順に並んでる。
『デザイン・パターン』は類書でもいいし、webでもいい。結城さんの本とか。
0534nobodyさん2009/10/01(木) 11:24:52ID:twwty8uP
>533
ありがとうございます。
0535nobodyさん2009/10/01(木) 11:30:48ID:qQSI8C4c
正規表現に関する質問です。
動的URLを静的URLにしたいです。
下記の場合のRewriteRuleの書き方を教えてください。

↓を試してみたら、2行目が優先されてしまい、1行目が対応できませんでした。
RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&pref=$3
RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&city=$3

http://sample.jp/v.php&q=tokyo&mode=pref&pref=q0001
↓
http://sample.jp/tokyo/pref_q0001/

http://sample.jp/v.php&q=daiba&mode=city&city=z0001
↓
http://sample.jp/daiba/city_z0001/
0536nobodyさん2009/10/01(木) 11:41:38ID:???
個人的意見だけど結城浩の本は悪書が多い
とにかく説明が下手糞
0537nobodyさん2009/10/01(木) 12:17:56ID:???
>>535
それこそPHPのしつもんじゃないだろ
[L]をつけろ
0538nobodyさん2009/10/01(木) 12:21:30ID:???
>>535
って、よくみたら
同じ条件で変換しとるやんけアホか
できるわけないだろ
0539nobodyさん2009/10/01(木) 12:25:15ID:???
RewriteRule ^([^/]+)/pref_([^/]+)/$ view.php?q=$1&mode=pref&pref=$2
RewriteRule ^([^/]+)/city_([^/]+)/$ view.php?q=$1&mode=city&city=$2
0540nobodyさん2009/10/01(木) 12:26:30ID:???
それか
RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&$2=$3
0541nobodyさん2009/10/01(木) 13:48:26ID:9PvgZ/Pg
PHPとあまり関係ないかも知れないけど、一つのwebサーバで複数のサイト運営するときって
php.iniの設定はどうするの?
サイトごとに別々に用意して読み込ませるとか出来るもの?
0542nobodyさん2009/10/01(木) 14:08:55ID:qQSI8C4c
>>539-540 できました! ありがとうございます。。
0543nobodyさん2009/10/01(木) 14:36:36ID:twwty8uP
>541
共通のを使って、違うところはそれぞれのvhostの中で独自定義したりする
05445032009/10/01(木) 14:40:00ID:ZppROofQ
php.iniの
max_execution_time = 60
を書き換えても、全然かわらないから、
ソース内に
set_time_limit(0);
を書いたらうまく行きました。
どうもでした。
0545nobodyさん2009/10/01(木) 14:41:46ID:/dzREAM4
便乗

>>543
レンサバで、そういうのいじれない場合はどうすればいいでしょうか。
0546nobodyさん2009/10/01(木) 14:55:09ID:???
>>545
いじれないことないと思うが。
普通ディレクトリ内にphp.iniを置けば認識する場合が多い。
でなければPHPスクリプト内で代用できるコマンドがあると思うけど。
上のset_time_limitみたいに
0547nobodyさん2009/10/01(木) 15:01:25ID:9PvgZ/Pg
>>543
なるほどー
凄く勉強になりました。ありがとう
0548nobodyさん2009/10/01(木) 15:02:24ID:v/9aEp65
xamppでphpのバージョンアップするときはどうしたらいいのでしょうか?
0549nobodyさん2009/10/01(木) 15:04:07ID:???
>>545
変更できるパラメータはini_setで変更
変更できるかどうかはマニュアルの「変更の可否」を参照

http://jp2.php.net/manual/ja/ini.list.php
0550nobodyさん2009/10/01(木) 15:06:17ID:???
単純にファイル上書きでいいはず
ただし設定ファイルを上書きしてしまわないよう注意
システム的にはこれでアップデートは完了だが
新しい機能を有効にしたい場合は当然設定しなおさないとだめ
0551nobodyさん2009/10/01(木) 20:19:36ID:PoVmDbv7
PHPで空メール送信機能を作りたいのですが処理とか必要なソフトとかどういう仕組みなのか教えてください
0552nobodyさん2009/10/01(木) 20:32:26ID:hYnFYsU3
Fatal error: Cannot redeclare class Exception in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\extended_exception01.php on line 7
0553湯ノ口2009/10/01(木) 20:39:02ID:???
pcからmbのサイトを見れないようにする方法を教えてください。
.htaccessで教えて頂ければ助かります。
pcからmbにアクセスしたら、こちらはmb専用ページですと表示したいです。

その逆(mbからpcサイト)も教えて頂ければ助かります。
あとseoの事を考えると検索ロボットのipを全部許可したいんです。
これも教えて頂ければ非常に助かります。

もっと簡単でいい方法があればそれでも結構です。
以上宜しくお願いします。
0554nobodyさん2009/10/01(木) 20:40:06ID:???
スレタイ
0555nobodyさん2009/10/01(木) 20:40:09ID:hYnFYsU3
http://www.php.net/manual/ja/language.exceptions.extending.php
の「例1 例外クラスを構築する」なんですけど、なにもコメントアウトしないとHTTP 500 Internal Server Errorが出ます。

それで、下半分をコメントアウトすると
Fatal error: Cannot redeclare class Exception in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\extended_exception01.php on line 7
が出ます(長いので次レス参照のこと)。

下半分をコメントアウトしたまま、クラス名をMyExceptionにすると、真っ白な画面ですが通ります。
これってクラス名は本当にExceptionのままでいいんですか?
それとコメントアウトせずに通すにはどうしたらいいんですか?
05565552009/10/01(木) 20:41:14ID:hYnFYsU3
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
ini_set('log_errors', 'On');
class Exception
{
protected $message = 'Unknown exception'; // exception message
private $string; // __toString cache
protected $code = 0; // user defined exception code
protected $file; // source filename of exception
protected $line; // source line of exception
private $trace; // backtrace
private $previous; // previous exception if nested exception

/*
public function __construct($message = null, $code = 0, Exception $previous = null);

final private function __clone(); // Inhibits cloning of exceptions.

final public function getMessage(); // message of exception
final public function getCode(); // code of exception
final public function getFile(); // source filename
final public function getLine(); // source line
final public function getTrace(); // an array of the backtrace()
final public function getPrevious(); // previous exception
final public function getTraceAsString(); // formatted string of trace
*/
/* Overrideable */
// public function __toString(); // formatted string for display
}
?>
0557nobodyさん2009/10/01(木) 20:45:15ID:???
>>555
それは組み込みのExceptionクラスのインタフェースの紹介です。
文章と例2を読んでみてください。
05585552009/10/01(木) 20:53:49ID:hYnFYsU3
>>557
ありがとうございます。
ちなみに質問する前に例2も一緒にコピペしてみたんですけどダメでした。
しかも、困ったことに下半分をコメントアウトしない限りエラーメッセージも出ないんですよね。

cloneはfinalにしてあってcloneできないようにしてありますよね。
しかも、どこからも呼ばれていません。
ですからE_FATAL エラーの発生ではないですね。

Exceptionクラスのみでさえエラーが出るんですから
それ以上足しても・・・と思うんですけどどうですか?
0559nobodyさん2009/10/01(木) 20:57:35ID:???
マニュアルの文章を読んでください
05605552009/10/01(木) 21:01:20ID:hYnFYsU3
>>559
読んで分からないから質問しているんです。
マニュアル読んだだけですべて理解できるならこの質問スレの意義すらないでしょう。
せめてヒントをください。あなたのレスでは抽象的過ぎて分かりません。
0561nobodyさん2009/10/01(木) 21:15:34ID:???
答えが分からないけど回答者ぶりたい奴ってマニュアル見ろしか言わないよね
激しくうざい存在
0562nobodyさん2009/10/01(木) 21:18:18ID:???
>>560
あなたの質問内容がマニュアルを読めば解決するレベルだからです。
05635552009/10/01(木) 21:24:20ID:hYnFYsU3
>>561
激同です
(出来ればIDを晒して文句を言っていただけると幸いです、自演と思われるとアレですので…)。
前回質問したときも、まったく的外れだったことがあります。

>>562
こっちだって出来るだけのことは調べて質問しているんです。
あなたが教える気がないのは分かりましたのでお引取りください。

代わりに他の回答者の方、お願いします。
0564nobodyさん2009/10/01(木) 21:31:31ID:???
>>562
じゃ六法全書も読めばすぐに弁護士になれるよな?

http://www.ron.gr.jp/law/

マニュアルがあればこの世の問題はすべて解決
・・・って馬鹿じゃね?
0565nobodyさん2009/10/01(木) 22:00:03ID:???
>>563
>>1
05665552009/10/01(木) 22:03:39ID:hYnFYsU3
>>565
自演乙です
0567nobodyさん2009/10/01(木) 22:07:27ID:???
自演じゃない煽りをスルーできない質問者もウザイということだ
答えが出てくるまで黙ってろボケ
0568nobodyさん2009/10/01(木) 22:15:15ID:???
>>562
本家PHPサイトの和訳を教えていただけませんか?
英語辞書あるから完璧ですよね
和訳を俺に伝授してくれませんか?^^
0569nobodyさん2009/10/01(木) 22:18:51ID:???
例2 例外クラスを拡張するの

// 例2
try {
$o = new TestException(TestException::THROW_DEFAULT);
} catch (MyException $e) { // この型にはマッチしない
echo "Caught my exception\n", $e;
$e->customFunction();
} catch (Exception $e) { // キャッチされる
echo "Caught Default Exception\n", $e;
}


これだけためして
ちゃんとExceptionしてくれてるよ

05705552009/10/01(木) 22:42:33ID:hYnFYsU3
>>569
ありがとうございます。
今、「例2 例外クラスを拡張する」のみを試したら、実行できました。
その中の「例1」「例2」「例3」「例4」も含めていますが、実行できます。

ということは、「例1 例外クラスを構築する」は元々既にPHPに組み込まれているクラスなのですか?
つまり、「例1 例外クラスを構築する」は「わざわざ打ち込んで実行する必要はない」という解釈で良いですか?
0571nobodyさん2009/10/01(木) 22:44:17ID:BF5xnbIm
>>570
よかったですねまともな回答者にめぐり合えて。
>>562みたいな回答したいだけの香具師(知識はもちろん初心者レベルでしょうね)の事は気にしてはいけませんよ
0572nobodyさん2009/10/01(木) 22:49:02ID:59iiS7vg
>>570
>以下のメンバーおよびプロパティは、 組み込みの Exception クラスから派生した子クラスの中でアクセス可能です。

ってマニュアルに書いてあるでしょ?

解答示せと言うのもわかる。ググレで終わるのもどうかと思う。
だがそれに対して逆ギレするのもどうかと思うぞ。
>>1のテンプレ位読んでくれ
0573nobodyさん2009/10/01(木) 22:56:26ID:???
すまないがそれでは下質ID認定回答者の証は与えられないかな
0574nobodyさん2009/10/01(木) 23:00:50ID:???
>>570

そのとおりだよ。
php5にもともと入ってるクラスを書きだしたのが例1


例2 例外クラスを拡張する の
class MyException extends Exception
の親クラスの中を見てみ
05755552009/10/01(木) 23:21:44ID:hYnFYsU3
>>571
応援、ありがとうございます。
正直、今回のは納得いきませんでしたね。
中途半端に回答して煽るくらいなら回答要りませんよね。

>>572
>以下のメンバーおよびプロパティは、 組み込みの Exception クラスから派生した子クラスの中でアクセス可能です。

それは「分かっている人の、分かっている人による、分かっている人のための」説明文でしょう。
では、少し長いですが「法人税法」第23条第2項を読んでみましょう:

「法人(公益法人等及び人格のない社団等を除く。以下この条において同じ)の株主等である内国法人が当該法人から
次に掲げる金銭その他の資産の交付を受けた場合において、その金銭の額及び金銭以外の資産の価値の合計額が
その交付の起因となった当該法人の株式(出資等も含む)の帳簿価額を超えるときは、この法律の規定の適用については、
その超える部分の金額のうち、当該法人の資本等の金額から成る部分の金額以外の金額は、利益の配当又は剰余金の分配の額とみなす」

・・・こういう文章がすっと頭に入る人は、頭が良いというより、「少しおかしいのではないか」と思う。 by 野口悠紀雄
確かに、どう見ても良い説明文ではないですよね。今回の件はそれと同じ印象を受けました。

それに、一言言ってくれれば済んだ話じゃないですか?
僕だって今はこうやって理解しているんですし。
回答者に不備があればこれからも一質問者として指摘していくつもりです。
その代わり、正しい回答が得られればきちんと感謝の意を示すつもりです。
05765552009/10/01(木) 23:26:41ID:hYnFYsU3
>>569 & >>574
やはり、その通りでしたか。
実はエラーメッセージに「Exceptionが再度宣言された」とあったので
元のExceptionが既に宣言されているのではないかと察してはいました。
しかし、それならわざわざ例として出す必要もないと思っていましたし、
なんと言っても題名が「例1 例外クラスを構築する」でしたからね(それでMyExceptionにしてみた訳ですが)。
原文のように「例1 既に組み込まれている例外クラス(=Example #1 The Built in Exception class)」であれば理解できたはずです。

僕も将来、あなたのような回答者になれるように努力します。
今回は本当にありがとうございました!
0577nobodyさん2009/10/01(木) 23:36:17ID:???
>>575
タイトルが既に「例外を拡張する」なんだが
■ このスレッドは過去ログ倉庫に格納されています