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

【PHP】下らねぇ質問はここに書き込みやがれ 47

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/05/26(土) 21:03:53ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
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カテゴリ)の各スレで
0081nobodyさん2007/06/09(土) 11:34:25ID:???
>>80
iODBCで印de米か?
0082nobodyさん2007/06/09(土) 12:08:32ID:???
>>76
むり
0083nobodyさん2007/06/09(土) 12:28:40ID:???
>>81
iODBCならドライバあるってこと?
それとも代替するものがあるとか?

odbc自体はじめて手をつけるので良くわかってないですが…
0084nobodyさん2007/06/09(土) 16:06:42ID:???
はやくまともな回答しろよ!くずくずやってんじゃねえ!
0085nobodyさん2007/06/09(土) 18:50:53ID:???
質問です。
Wikipediaなどで文字列を検索すると、
ttp://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%83%E3%82%AF%E3%83%9E%E3%83%B3
のように、URLの後ろに「%E3%83%AD〜」のように表示される謎の文字がありますが、
これを日本語に変換するにはどうしたらよいでしょうか(上のは"ロックマン"で検索)

mb_convert_encoding('%E3%83%AD%E3%83%83%E3%82%AF%E3%83%9E%E3%83%B3','ASCII','auto')
↑のような感じで色々と試し、小3時間くらい悩んだのですが分かりませんorz

Super PHP Masterな先生方、どうかご教授をお願いします。
0086nobodyさん2007/06/09(土) 19:02:29ID:???
>>85
http://pc11.2ch.net/test/read.cgi/php/1065258181/
ttp://ja.wikipedia.org/wiki/%55%52%4C%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89
ttp://jp.php.net/manual/ja/function.urldecode.php
0087852007/06/09(土) 19:10:14ID:???
>>86

神速レス有り難うございます。
早速、トライさせてもらいます。失った3時間を取り戻すために・・・。
せっかくの休日が・・・orz
0088nobodyさん2007/06/09(土) 19:23:46ID:???
君みたいな低脳は休日も必死にやらないと無理
だから一緒にがんばろうZE
0089nobodyさん2007/06/09(土) 20:11:14ID:???
>>85に関連して、font-familyの指定が、日本語じゃなくてめちゃくちゃな文字列になってるページがあります
ブラウザ毎の互換性を保つためだそうですが、どういう規則で変換しているのでしょうか?
0090nobodyさん2007/06/09(土) 20:35:57ID:???
日本語でおk
0091nobodyさん2007/06/10(日) 03:52:52ID:???
ここは実質
【PHP】下らねぇ質問はここに書き込みやがれ 48
らしいのれす
0092nobodyさん2007/06/10(日) 11:30:20ID:???
http://www.php.net/manual/ja/install.windows.building.php#install.windows.building.install
↑を参考にしながらWinXP SP2、VS2005ProでPHPをコンパイルしてるんですが
"cscript /nologo configure.js"を実行すると↓のメッセージが出て止まります

ERROR: We really need that arpa\nameser.h file - it is part of the win32build package

"arpa\nameser.h"はwin32build\include\の中にあるんですがなにが悪いでしょうか
だれか助けて
0093nobodyさん2007/06/10(日) 13:15:07ID:hfm7nUZI
sqliteで、テーブルを作成するクエリーを
テーブルが存在しない場合だけ送るにはどうしたらよいでしょうか。
0094nobodyさん2007/06/10(日) 13:18:37ID:???
>>93
システムテーブルsqlite_masterをチェック。
0095nobodyさん2007/06/10(日) 13:43:42ID:hfm7nUZI
>>94
ありがとうございます!!
0096nobodyさん2007/06/10(日) 13:52:55ID:???
IF NOT EXISTS
できないの?
0097nobodyさん2007/06/10(日) 14:06:46ID:???
>>92
http://www.php.net/extra/bindlib_w32.zipの方のnameser.hを使ってる?
0098nobodyさん2007/06/10(日) 16:03:23ID:???
にしても前スレの終わり方美しすぎるなw
0099nobodyさん2007/06/10(日) 18:01:26ID:5wNcTWXc
すみません。技術的な質問ではないのですが、みなさんはASP.NETできますか?

上司からASPも覚えろといわれたので、VBかC#か迷っています。Javaができるので、
たぶんC#もできるかもしれませんが、どちらか迷っています。

私は主にPHPプログラマなので、PHPプログラマとしての皆さんの意見を聞きたいです。
ちなみに入社3年目です。
0100nobodyさん2007/06/10(日) 18:10:56ID:???
>>99
全部覚えればいーじゃん
0101nobodyさん2007/06/10(日) 18:23:28ID:???
>>99
正直言語にはこだわらない。必要ならば覚えて使う。
0102nobodyさん2007/06/10(日) 19:42:09ID:???
JavaとPHPやってるやつは、.netは好まないと思うけどな。
いまやるならC#でしょー。
0103nobodyさん2007/06/10(日) 19:48:16ID:???
2chからはてなに質問まわした奴いるぞwww
ttp://q.hatena.ne.jp/1181470206
0104nobodyさん2007/06/10(日) 19:50:11ID:JEj3O9Ea
PHPやRubyではなく、C#やVBをはじめる理由って何なんでしょう?
0105nobodyさん2007/06/10(日) 20:04:14ID:???
C#、VB、JavaでできることってPHPでできるから別に必要なくね?
0106nobodyさん2007/06/10(日) 20:11:05ID:m/1AqGfG
wikiみたいに

*テスト
**ああああ



<ul>
<li>テスト</li>
<li>
 <ul>
 <li>ああああ</li>
 </ul>
</li>
</ul>

このような感じに置き換えたいのですが、
どのようにしているのでしょうか?
0107nobodyさん2007/06/10(日) 20:12:43ID:???
>>106
pukiwikiのソース見れ
0108nobodyさん2007/06/10(日) 20:20:15ID:m/1AqGfG
*テスト



<ul>
<li>テスト</li>
</ul>

に置き換えるのはできるんですが

*テスト
*テスト2

と、2行並ぶとおきかえれなくなります・・・
2行、先頭に「*」がつくのを判断するのにはどうすれば良いのでしょうか?
それとも、一行ずつチェックしているのでしょうか?
0109nobodyさん2007/06/10(日) 20:21:11ID:???
^*.+\n
01101092007/06/10(日) 20:22:01ID:???
ミスったw
0111nobodyさん2007/06/10(日) 20:29:09ID:???
>>108
一行ずつやってるぽい
preg_match('/^(\*{0,3})(.*?)\[#([A-Za-z][\w-]+)\](.*?)$/m', $str, $matches)
0112nobodyさん2007/06/10(日) 20:30:42ID:m/1AqGfG
先頭に*があると文字列を<li></li>で囲むとして、
どうしても<ul></ul>をどこで囲むかが問題になってくr・・・
0113nobodyさん2007/06/10(日) 20:40:44ID:???
何その語尾嫌がらせ?
0114nobodyさん2007/06/10(日) 20:41:18ID:m/1AqGfG
>>113
ごめ、ちゃんと文字打ててなかっただけ、気にしないで
0115nobodyさん2007/06/10(日) 21:17:56ID:???
>>114
神経質な奴もいるから気をつけてね
0116nobodyさん2007/06/10(日) 21:24:53ID:1dgBe5c3
$fp=fopen(LOGFILE,"r+");
flock($fp, 2);
rewind($fp);
$buf=fread($fp,1000000);
if($buf==''){error("error load log",$dest);}

PHP4からPHP5に変えて急に一番下のifに引っかかるようになったのですが
どれかの関数が仕様が変わったのでしょうか?
PHP4のほうでは正常に動作します。
0117nobodyさん2007/06/10(日) 21:28:56ID:m/1AqGfG
>>115
すんません
焦ってかくとたまにああなるんで・・・
0118nobodyさん2007/06/10(日) 22:01:09ID:tKezqK1j
画像のアップロードで詰まってしまっています

フォームページ→確認ページ→完了ページ
という遷移で
テキストデータはhiddenで次へ回せばいいのですが
type="file"の$_FILES系はどうやって保持するのがいいのでしょうか?
確認ページでmove_uploaded_fileしてしまうおうかと思ったのですが
見ている人がブラウザを閉じてしまうとサーバー内に宙ぶらりんになってしまいますよね?
0119nobodyさん2007/06/10(日) 22:20:04ID:???
>>116
var_dump($buf);
>>118
ファイルが宙ぶらりんになってたら消せばいい
0120nobodyさん2007/06/10(日) 22:33:29ID:???
>>119
でも一旦アップロードするより、確定でUPしたほうが軽くてスマートですよね?
0121nobodyさん2007/06/10(日) 23:06:18ID:???
>>120
じゃそうすれば
0122nobodyさん2007/06/10(日) 23:23:09ID:hfm7nUZI
SQLiteとPHPでバグって困ってます。

FORMから空文字送って、それをSQLiteに入れて取り出すと
"ネes"などの変な文字が出てきます。

しかし、if($_POST['hoge'] == ""){ $hoge = ""; }
を挟むとこの問題が回避でき、SQLiteに空文字が保管されます。

不可解なのは、もしフォームからの値が""で無いならば
if($_POST['hoge'] == "")には引っかからないはずなのに
この処理をしないで、sqlite_query_stringsのみをして
保存すると変な文字列が出現すると言うことです。

これは何故なんでしょう。
0123nobodyさん2007/06/10(日) 23:25:50ID:???
>>118
正直気にする程の容量か? cronで一定期間経過後のゴミファイルを消せばいいだけじゃないかな
0124nobodyさん2007/06/10(日) 23:25:50ID:hfm7nUZI
>>122の11行目は
sqlite_escape_stringの間違いです、すみません。
SQLiteモジュール版で2系、PHPは4.4.6です。
0125nobodyさん2007/06/10(日) 23:48:15ID:???
>>123
レンタルサーバーですし
やっぱり使わないファイルがあるのは気持ち悪いかなと…
0126nobodyさん2007/06/10(日) 23:53:56ID:???
レンタルサーバーでアップローダーは転送量的に全然無理だよ。
専用鯖か自宅鯖じゃないとすぐ止められる。
0127nobodyさん2007/06/11(月) 00:47:06ID:???
>>118
自分でテンポラリファイルのシステムを作るとか
確認の時点ではtmpファイルにしておいて、決定したなら移動させる
tmpのまま残ってるのは次の投稿でチェックして消すと
0128nobodyさん2007/06/11(月) 01:37:24ID:???
>>127
やっぱり$_FILESは引っ張ったままどんどんすすめませんよね…
0129nobodyさん2007/06/11(月) 01:40:43ID:???
>>128
気持ち悪い話し方するな
0130nobodyさん2007/06/11(月) 04:04:52ID:???
くだらないこと考えてる暇あったらまず組めよ。
0131nobodyさん2007/06/11(月) 04:34:13ID:ZcbFgCno
不可解どうこうの前にまず$_POST['hoge']の中身確認しろよ
あと厳密に比較したいなら===つかとけ
0132nobodyさん2007/06/11(月) 04:43:37ID:???
普通に使ってる分にはファイルアップロードの実装がどうなってるのかはイマイチ分からんな
もしかしたらmove_upload_file()する前のtmpファイルが一定期間は残ってるのかもよ
確認して汁
0133nobodyさん2007/06/11(月) 04:48:29ID:???
マニュアルでは
>移動または名前の変更が行われていない場合、リクエストの終了時に
>そのファイルはテンポラリディレクトリから削除されます。

らしいから一旦は保存しなきゃダメかな

0134nobodyさん2007/06/11(月) 08:14:21ID:eDI3UWsO
大発明した! マジでノーベル賞かフィールズ賞もらえるかも知れん
nが素数かどうかを判別する関数書いて、借りてる鯖でとりあえず1億まで
forで回してみたらたらちゃんと動いたぜ!
0135nobodyさん2007/06/11(月) 08:20:56ID:???
>>134
・・・・質問は?
0136nobodyさん2007/06/11(月) 09:42:40ID:???
ヒント: log10(2) = 0.301...
つまりRSAでよく使う1024ビットの素数の桁は...
0137nobodyさん2007/06/11(月) 11:40:46ID:eaoXxzlR
いま、ローカルのWindowsでPHP Version 4.4.6を動かしていて、
本番サーバには4.4.7が入っているんですが、
0.0.1でもバージョンが違えば、変えたほうがいいですかね?

あと、ローカルのWindowsをバージョンアップする場合、
C:\WINDOWSにあるiniとかも新しいファイルに変えなければいけないんでしょうか?
よろしくお願いいたします。
0138nobodyさん2007/06/11(月) 11:49:06ID:???
こちらこそよろしくおねがいします。
0139nobodyさん2007/06/11(月) 11:51:54ID:???
windowsディレクトリにini入れることが間違ってる
バージョンは change log で確認して適当に判断しる
0140nobodyさん2007/06/11(月) 15:01:59ID:RNtXLFSd
日付が存在するか、調べる関数はありますでしょうか?
ない場合、皆さんはどんな方法でやりますか?
以下のようにやっているんですが、かなり無駄な処理をしている気がします…

$date = YYYYMMDD;

function date_check(&$date) {
$year = substr($date, 0,4);
$month = substr($date, 4,6);
$day = substr($date, 6);
// 分解後、生成
$new_date = date('Y-m-d', mktime(0,0,0,$month, $day, $year));
list($y,$m,$d) = split('-', $new_date);
if($year == $y && $month == $m && $day ==$d) return TRUE;
}
0141nobodyさん2007/06/11(月) 15:04:31ID:irDGLGst
$sql="INSERT INTO MARIOCHARACTERS VALUES(0,"ピーチ姫");
mysql_query($sql);
これがローカル環境だとうまくいくのにレンサバに移行したらうまくいきません。
エラーをみると、どうやらMARIOCHARACTERSが大文字であることがいけないようでした。
DBには小文字でテーブル名を登録したからです。
ローカルだと同じ条件下でうまくいったのに・・・

と思ってstrtolower($sql)を施すと、
日本語の部分が文字化けします。

sqlはコードに腐るほど書いているのですべて小文字にするには
膨大な作業時間を要します。
「テーブル名を大文字にする」以外の解決策をどなたか教えていただけませんか?
01421412007/06/11(月) 15:05:37ID:irDGLGst
すみません、最初の行は
$sql="INSERT INTO MARIOCHARACTERS VALUES(0,'ピーチ姫');";
です。
01431412007/06/11(月) 15:08:56ID:irDGLGst
>>140
checkdate($month,$day,$year)
0144nobodyさん2007/06/11(月) 15:14:43ID:eaoXxzlR
>>139
>windowsディレクトリにini入れることが間違ってる
え?そうだったっけ?
俺の環境ではうまくいってますけど・・・
0145nobodyさん2007/06/11(月) 15:15:31ID:???
>>144
Apacheの設定でiniまでのパスがあるだろ
0146nobodyさん2007/06/11(月) 15:30:13ID:RNtXLFSd
>>143さん
ありがとうございます
できました
0147nobodyさん2007/06/11(月) 15:47:03ID:???
>>141
1)[my.cnf]にlower_case_table_names=1 で起動してみる。 ただレンサバだと無理か?

2)mysql_query($sql) のラッパーを作って、そこで テーブル名を小文字に置換する処理を書く

3)dbのダンプファイルをmysqldumpで吐き出して、テーブル名を大文字に書き換える 。なんだかんだ言って一番楽か

4)一括で、ソース内を置換する。sed awkとかわからんなら、GrepReplaceとかのwindows用置換ソフト使ってみる。

のどれかか
0148nobodyさん2007/06/11(月) 16:15:17ID:22t8rr67
>>76-77
JpGraphじゃこんな細密なグラフは無理じゃまいか?
JpGraphってexcelのグラフみたいな大味なのしかできまい?
0149nobodyさん2007/06/11(月) 16:16:39ID:???
GDならできるんじゃね?
0150リガルド2007/06/11(月) 17:06:50ID:Aub30YN1
どうも。数々のスレ違いを超えてここまで来ました。どなたか掲示板のプログラムの書き方を知りませんか?
もしよければ教えてください。
0151nobodyさん2007/06/11(月) 17:10:36ID:uKFByx/1
1.PHPスクリプトaaa.phpはSEOに向きますか?
aaa.htmlみたいにhtmlファイルじゃないとSEOには向かないのでしょうか?

2.PHPスクリプトでhttp://hogehoge.com/hoge.php/aaa.htmlでアクセスしてきたら
hoge.phpでaaa.htmlを出力するのもSEOには向いてますかね?


いま会社のホームページを個人でSEOやるんですが、PHPで構築するべきか悩んでおります。
どなたかご指摘ください。よろしくお願いいたします
0152nobodyさん2007/06/11(月) 17:16:20ID:???
>>150
好きなの探せば
ttp://www.google.co.jp/search?num=30&hl=ja&lr=lang_ja&safe=off&rlz=1B3GGGL_jaJP210JP210&pwst=1&q=php+%E6%8E%B2%E7%A4%BA%E6%9D%BF+%E4%BD%9C%E6%88%90&suggest=0&sa=X&oi=cjkrefinements&ct=result&cd=1
0153nobodyさん2007/06/11(月) 17:17:11ID:HEK1r48r
$a = array('1' => 'abc', '2' => 'def', '3' => 'ghi');
foreach ($a as $b => $c) {
 print "$b と $c\n";
}

$abc = <<<ABC

ABC;

print部分を$abcdの中でループさせたいんですが、調べてみても方法がわかりませんでした。
下らない質問で恐縮ですが、どなたか宜しくお願いします・・・
0154nobodyさん2007/06/11(月) 17:19:40ID:???
>>151
apache側で mod_rewrite を使う
0155nobodyさん2007/06/11(月) 17:21:03ID:???
>>148
ワシのJpGraphは百八式まであるぞ
http://www.asial.co.jp/jpgraph/examples.php
0156nobodyさん2007/06/11(月) 17:22:59ID:???
>>153
何がしたいのか、20%くらいしか分かりません
0157nobodyさん2007/06/11(月) 17:23:58ID:???
>>153
質問の意図が不明 変数が紛らわしい、 $abcdて何を示しているのか。
0158nobodyさん2007/06/11(月) 17:28:57ID:???
>>151
.phpをはじく検索エンジンはない。だからPHPで問題ない。
特定アドレスで何を表示させるかだけ気にすればいい。

リダイレクトだとかは、物によっては減点される。
っていうか、そういうのがわからない人はSEOしようとするだけ逆効果。
01591532007/06/11(月) 17:39:56ID:HEK1r48r
>>157
すみません、$abcdじゃなくて$abcでした。

<?php
$kore = array('1' => 'abc', '2' => 'def', '3' => 'ghi');
foreach ($kore as $sore => $are) {
 print "$sore と $are \n";
}

print = <<<ABC
 <body>
  なんか文字
  <div>
  ここに表示させたい
  </div>
  なんか文字
 </body>
ABC;
?>
foreachのカッコ外に書くとループされなくて困ってます
日本語不自由で本当にすみません・・
0160リガルド2007/06/11(月) 17:42:00ID:Aub30YN1
nobodyさんどうもありがとうございました。自分にあったものを探して見ます。
0161nobodyさん2007/06/11(月) 17:43:21ID:???
PDOのqueryについて質問です。

$sth = $pdo->query($sql);
とやると$sthにはPDOStatementオブジェクトが返されるのですが
例えば結果セットが0だったとしても同じオブジェクトが返されます。

その場合、foreach内とかで結果があるかどうか判断するしかないのでしょうか?
例を以下に書くと

foreach($pdo->query($sql) as $value){
  $result = true;
}
if(!$true) exit;

と、書くのはあまりスマートじゃない気がするのですが…
01621612007/06/11(月) 17:43:47ID:Qju5bIjI
すいません、ID出し忘れました。
0163nobodyさん2007/06/11(月) 17:44:07ID:???
>>159
print = <<<ABC
 <body>
  なんか文字
  <div>
ABC;
foreach ($kore as $sore => $are) {
 print "$sore と $are \n";
}
print = <<<ABC
  </div>
  なんか文字
 </body>
ABC;
0164nobodyさん2007/06/11(月) 17:46:09ID:???
>>161
PDOStatementの中見て判定すればいいのでは?
0165nobodyさん2007/06/11(月) 17:47:43ID:Qju5bIjI
>>164
そうしようと思ったのですが、var_dumpで見ても全く同じなので困っているのです。
0166nobodyさん2007/06/11(月) 17:49:24ID:???
>>161
下記の例1745をどうぞ。
http://jp.php.net/manual/ja/function.PDOStatement-rowCount.php
0167nobodyさん2007/06/11(月) 17:51:03ID:Qju5bIjI
>>166
なるほど、大変参考になりました。
ありがとうございます。
0168nobodyさん2007/06/11(月) 18:18:51ID:???
>>159
<?php
$kore = array('1' => 'abc', '2' => 'def', '3' => 'ghi');

function hoge($kore){
foreach ($kore as $sore => $are) {
 print "$sore と $are \n";
}
}
?>

 <body>
  なんか文字
  <div>
<?php
hoge($kore);
?>
  ここに表示させたい
  </div>
  なんか文字
 </body>
0169nobodyさん2007/06/11(月) 18:27:32ID:NlNPG8R0
include("ks1\sm.php");
if($fp >= 1) {$on1="1";}else {$of1="1";}

include("ks2\sm.php");
if($fp >= 1) {$on2="2";}else {$of2="2";}

でループを作るため変数で数字を変えようとしたのですが

include("ks○\sm.php");
if($fp >= 1) {$on●="○";}else {$of●="○";}

○の部分は変数で指定する事が出来たのですが●の部分を
変数で指定する事ができません、つまり 

$a=1; としたときに
include("ks$a\sm.php");
if($fp >= 1) {$on$a(ここと)="$a";}else {$of$a(ここが指定できない)="$a";}

$on1と$of1の中身に値を入れることができない


どうすればうまく行くのでしょうか・・・
こんな質問で恐縮ですが、どなたか宜しくお願いします
0170nobodyさん2007/06/11(月) 18:30:25ID:???
1.配列を使う
2.可変変数を使う

オススメは1
01711692007/06/11(月) 18:33:19ID:???
>>170
わかりましたありがとうございます
スレ汚し失礼しました
0172nobodyさん2007/06/12(火) 02:33:14ID:UZQhzfQf
nameが「test」のテキストエリアの中身を取得したいときに
preg_match('/<textarea(.*)name="after"(.*)>(.*)<\/textarea>/s',$str,$match);
としたのですが、何もマッチしませんでした。
HTMLに色々あって、name="after"のテキストエリアがあるのですが、
どのようにマッチさせれば良いのでしょうか?
01731722007/06/12(火) 02:48:13ID:UZQhzfQf
'/<textarea cols=36 rows=15 name="after".*?>(.*)<\/textarea>/si'
で事故解決しました
0174nobodyさん2007/06/12(火) 02:59:48ID:???
>>171
スレは汚すためにつかうもの
0175nobodyさん2007/06/12(火) 07:08:37ID:???
>>159
<?php
$hyouji = "";
$kore = array('1' => 'abc', '2' => 'def', '3' => 'ghi');
foreach ($kore as $sore => $are) {
 $hyouji .= "$sore と $are \n";
}

print <<<ABC
 <body>
  なんか文字
  <div>
  $hyouji
  </div>
  なんか文字
 </body>
ABC;
?>
0176nobodyさん2007/06/12(火) 11:45:43ID:PUVkyguw
今とある本で、「スコープ演算子」という章をやっています。:: と static の使い方を説明しています。
staticで宣言されたメソッド、プロパティなどは、オブジェクトではなくクラスの持ち物と書いてあります。

Circleクラスを定義します。その中に public static $color; というプロパティ宣言と
public static functions setColor($color); public function getColor(); public __get($prop)というメソッドを定義します

そして オブジェクト生成で$redCircle = new Circle();とします。
そうすると$redCircle->getColor()とするとプロパティは存在しない(static宣言されているのでオブジェクトの持ち物ではないから)
とちゃんとなるんですが、static宣言したメソッドsetColorは使用できてしまいます。
$redCircle->setColor($color);とすると$colorプロパティに値が設定されてしまいます。
ちなみに __call($func, $param)メソッドを定義してみてもエラーメッセージは表示されませんでした。

なぜ、static宣言された、プロパティの場合だとオブジェクトの持ち物ではないことになり(プロパティを使用できない)、
メソッドの場合だとオブジェクトの持ち物になってしまう(メソッドをしようできる)ことになってしまうのでしょうか?

冒頭にも書きましたが、static宣言されたプロパティ・メソッドはクラスの持ち物だと書かれています。
static 宣言されたメソッドがオブジェクトから使用できるのが納得できませんし、ましてや$colorプロパティをその中で
使っています。全然、理解できません。。お願いします。
01771762007/06/12(火) 11:48:18ID:PUVkyguw
ちなみにvar_dump($redCircle)で出力したところ、空のものが帰ってきます。
もう、ワケワカメです。(-人-)分かる人、お願いします。
0178nobodyさん2007/06/12(火) 11:51:48ID:???
>>176
そいういうものだとしかいいようがないな。なんか一貫性がなかったり
間違ってるように思えるのはPHPを作った奴が(ry
0179nobodyさん2007/06/12(火) 11:56:48ID:???
>>176
長々説明するより、問題のコード書いてくれよ
0180nobodyさん2007/06/12(火) 11:59:49ID:tW89iOYP
strip_tagsを使ってテキストからHTMLタグを削除するものを作ったのですが
メールのあて先などと同じ書き方
ホゲホゲ<hoge@>などの記載がある場合に
メールアドレスの部分もきっちり削除されてしまって
困っています
strip_tagsの機能はそのままに上記のような書き方の場合のみ
strip_tagsを適用しないようにするにはどのようにしたらいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています