【PHP】下らねぇ質問はID出して書き込みやがれ 82at PHP
【PHP】下らねぇ質問はID出して書き込みやがれ 82 - 暇つぶし2ch357:345
09/03/17 18:00:29 s4aiV5Ak
>>352さん
>>353さん、回答下ったみなさん、有難うございました!

2ちゃんねるはじめてだったのですが回答いただけてうれしかったです。
なんとなく方向がわかったので色々やってみます。

358:330
09/03/17 18:07:06 Ib1RB6YL
>>356
すみません;
>>332 に書いたのですが、IDを出し忘れてしまって・・・

恥ずかしながら、トークナイザーというのをはじめて聞いたのですが、
どういったものなのでしょうか?
PHPには、その機能は備わっているのでしょうか?

359:nobodyさん
09/03/17 19:00:40
wikiのソース参考にしてみたら?

360:nobodyさん
09/03/17 19:31:59
>>330
アルゴリズムの問題だと思うけど、マッチングした文字列をいったん置き直して、展開しなすとかしたら?

日本海溝は太平洋側にあります。
<3>は太平洋側にあります。
<3>は<4>側にあります。

みたく文字列を順次置き直して、あとから <id>をリンクつきのHTMLで展開。


361:330
09/03/17 19:43:02 Ib1RB6YL
>>359
それだけの力があればそうしたいのですが・・・
基本的な考え方だけでもお願いしたいです。

>>360
おぉ!そういう方法がありましたね。
しかし、元の文章に<1>という文字列が含まれていた場合、面倒なことにならないでしょうか?
元の文章は、ユーザーが自由に投稿できる類のものなので・・・
<<<1>>>のように、括弧を増やしたり、!?!1!?!のように、複雑なものにすれば
出現する確立は減らすことができるのでしょうが、それでも0パーセントではないですし・・・

おっしゃるとおり、PHPに関する質問という範囲を超えているかもしれませんが、
どうかお付き合いお願いしたいです。

362:nobodyさん
09/03/17 19:51:31
キーワードをrsortして順にリンク外文字列に対して処理していけばいい

363:nobodyさん
09/03/17 19:51:53
ユーザの投稿に<1>があったら\<1\>とかにまず置き換えればいいじゃん
そんで>>360の処理のあとにもとにもどせばよい

364:nobodyさん
09/03/17 20:07:16
>>330
優先順位が悪い

1,日本海溝
2,日本海
3.日本

の順でループして探索して見つかったら置き換えてbreakして位置を記録
最後に置き換えた位置から同様にして探索
これをEOFに達するまで繰り返す

365:364
09/03/17 20:10:19
ごめんよくよく考えたら非効率だな
忘れてくれ

366:330
09/03/17 21:04:12 Ib1RB6YL
>>362
リンク外かどうかの判定の仕方がわからなくて・・・
>>360 さんに提示していただいたように、特殊な記法に置き換える方向で行こうかと思います。

>>363
そうでした!一度エスケープのような処理をすればよかったのですね!

・・・これでなんとか解決したように思ったのですが、今度は、辞書に<id>という単語が含まれていた場合に、
問題が発生しました。

たとえば、辞書にこんな感じの単語があると、

id,word
5,<3>

長いものから置き換えるので、
まず「日本海溝」が<3>に置き換えられ、
その後、「<3>」がふたたびマッチしてしまい、
<5>に置き換えられてしまいます。

最終的に出力されるのは
<a href="word/5"><3></a>

になってしまいます。
意外と難しいですね;

>>364
位置を記憶するというのはやってみたのですが、
文字数の長い順に出現するとは限らないのでだめでした・・・;



367:nobodyさん
09/03/17 21:13:49
>>366
そもそも最終的に生成するHTMLにタグじゃない < > を入れてどうする気だ。
テキストとキーワードにあらかじめhtmlspecialchars しておけばいいやん。

368:366
09/03/17 21:20:04 Ib1RB6YL
>>367
そうでした;;
キーワードもエスケープ処理しておくことでうまくいきました!

おかげさまで、当初の目的が達成できました。
もっと精進します・・・w
レスをくれたみなさん、ありがとうございました!

369:nobodyさん
09/03/17 21:26:48
キーワードは最長一致させるのが原則。
"WEBプログラミング"なら、"WEB"や"プログラミング"より
"WEBプログラミング"の方が指定がより明確だから重要度が高いよね。
それに最長一致なら被らない。

処理の重さに関しては、保存時はゆっくり反映で良いので問題ない。

はてダみたいに、外部リンクのサイトのタイトルの文字列まで取得して
投稿を書き換えようとするのは外部サイトの都合で時々タイムアウトしてるけど、
自鯖の中でのリンクの置き換え程度なら、よっぽどキーワード数が多いとかじゃなければ
タイムアウトはまず起こらない。

キーワードを使うケースの場合、ROMユーザーが書き込むユーザーより圧倒的に多いし
そうでなければそのサービスは成り立たないから、ROMユーザーに対して
内容がキャッシュされてれば投稿時はかなり重い処理でも構わない。

370:nobodyさん
09/03/17 21:29:46
またWikiやはてなみたいなスパムサイトが増えるのか。

371:nobodyさん
09/03/17 23:09:10 whdlEm3/
array('a'=>'b','c'=>'d')

array('a','b','c','d')
にする簡単な方法があれば教えて下さい

372:nobodyさん
09/03/17 23:25:11
>>371
foreach( $oldarray as $key => $value ){
array_push( $newarray, $key ); array_push( $newarray, $value );
}


373:nobodyさん
09/03/17 23:50:49
>>371
$newArray = array_merge(array_keys($oldArray), array_values($oldArray));

374:nobodyさん
09/03/17 23:52:05
ああこっちだったわ

$newArray = array_keys($oldArray) + array_values($oldArray);

375:nobodyさん
09/03/18 02:04:43
スレリンク(php板)
こっちで懐かしいやつが暴れてるぞ

376:nobodyさん
09/03/18 03:57:38 Zcgp4DkA
文字列がintとして妥当かどうか調べるにはどうしたらいいですか?


377:nobodyさん
09/03/18 04:05:19
死ぬほど既出

378:nobodyさん
09/03/18 08:50:19
「intとして妥当」を説明してみろ。

379:nobodyさん
09/03/18 09:22:56
is_numeric
is_int

のことじゃないかとエスパーしてみる

380:nobodyさん
09/03/18 09:24:58
is_intは型判定だろ

381:nobodyさん
09/03/18 09:39:50
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

382:nobodyさん
09/03/18 10:52:55
>>376
正規表現で調べればよい
if (preg_match("/^[0-9]+$/", $string)) {
 妥当
}

383:nobodyさん
09/03/18 10:55:30
>>382
それだとunsigned intじゃ...


384:nobodyさん
09/03/18 11:00:44
負も調べたいってこと?
なら
if (preg_match("/^-?[0-9]+$/", $string)) {
 妥当
}
かな

385:nobodyさん
09/03/18 11:03:09
ちなみに指数表記やInfinityまで対応というなら
またパターンを増やせばよい

386:nobodyさん
09/03/18 11:07:58
あと厳密にintならPHPの場合何バイトかしらないけど(たぶん4?)
その辺も考慮しないといかんかな
strlenで32ビット以内かどうか調べる処理とか

387:nobodyさん
09/03/18 11:10:31
strlenは関係ない
2^32を2の補数で表した値の範囲かどうかだな
?2147483648~2147483647

388:nobodyさん
09/03/18 11:22:00
preg_match("/^-?[0-9]+$/", $string) && $string >= -2147483648 && $string <= 2147483647

389:nobodyさん
09/03/18 11:46:44
$は改行にもマッチするから、D修飾子を付ける
それから、0123は整数か?

390:nobodyさん
09/03/18 12:01:38
>>388
厳密な数値かはわからないよね
だってそれだと下のどれでも引っかかるからね

123
-123
"123"
"-123"

391:nobodyさん
09/03/18 12:13:56
つ[:digit:]

392:nobodyさん
09/03/18 12:33:33
質問者があいまいなまま補足してくれないのにこぞって答えなくても

393:nobodyさん
09/03/18 13:00:35
0xa0 だって立派にint型を表現した文字列として妥当といえるよねー


394:nobodyさん
09/03/18 13:17:37
答えるのが簡単だからだろ?

395:nobodyさん
09/03/18 13:24:34
死ぬほど既出だけどな

396:nobodyさん
09/03/18 13:27:19
テンプレ守ってる以上答えてやってもいいだろ
いちいちグチグチ言うやつは黙ってればいい

397:nobodyさん
09/03/18 14:23:57 R7u4YHhc
なぜimagecreatefrombmpは無いんですか?
デジカメとかだとBMPで出力するカメラも結構有るし需要あると思うけど。
ビットマップからイメージ作れるユーザー関数ありますか?

398:nobodyさん
09/03/18 14:25:50
>>397
User Contributed Notesの一番上

399:nobodyさん
09/03/18 14:47:40 meKzf6DJ
クラス内のメソッドはだいたい何行くらいで収めるのが目安でしょうか?

400:nobodyさん
09/03/18 15:58:45
50行くらい

401:nobodyさん
09/03/18 16:21:37
>>399
そんなのきまってない

402:nobodyさん
09/03/18 16:42:30
URLリンク(hightide.blog2.fc2.com)

403:nobodyさん
09/03/18 17:10:10
>>399
画面半分に納めるのはよいプラクティスだって昔だれかがいってた。
スクロールしないと見れないメソッドはクソの匂いがするとも。


404:nobodyさん
09/03/18 19:19:39
>>392
ザコは黙ってろ

405:nobodyさん
09/03/18 19:20:32
>>399
pearのコーディング規約に1行何文字程度に収めるか決めてるから参考に読んでこれば

406:nobodyさん
09/03/18 19:48:17
1行あたりの文字数と
メソッドを何行に収めるかの話が
関係あるのか?

407:nobodyさん
09/03/18 20:07:04
掛け軸ぐらいな縦長のモニタだったら余裕だなw

408:nobodyさん
09/03/18 20:37:37
フォントを1ドットにしてもいいぞ

409:nobodyさん
09/03/18 21:09:42
>>406
既に答えが出てるだろ
ゆとりかおまえ

410:nobodyさん
09/03/18 21:14:44
お前は何を言ってるんだ

411:nobodyさん
09/03/18 22:22:03
>>410はゆとりだから気にしなくていいよ

412:nobodyさん
09/03/18 23:15:59 gf2MXR+O
本運用のリモートのunix系鯖か、
開発のローカルのwinかで、
デバッグ云々用とかで判別するのは
if (DIRECTORY_SEPARATOR == '/') { ...
で問題なし?

413:nobodyさん
09/03/19 00:18:23
開発環境をunixにしたくなったら詰むな。
それと、Win環境で本番環境同様の状態をエミュレートしたくなった場合も身動きが取れなくなる。

function isDevelopEnvironment()
とかをどこかグローバルにアクセスできる場所(グローバル関数か、クラスのstatic関数)に置いとけ。
他の場所からはこの関数で判定するようにしておけば、判定方法が変わっても変更が一箇所で済む。
実装と意図の分離は設計の基礎。
呼び出し側でやりたい事(意図)は環境の判別なのだから、関数名はそうなっているべき。
環境を識別するのにDIRECTORY_SEPARATORを使う、ってのは実装の話で、意図じゃない。
(もっと言うなら、開発環境がWinで運用環境がUnixなのも「たまたまそうなってる」だけの、つまり実装依存な話)

で、実装の話だが。
俺ならホスト名を開発環境と本番環境で変えておいて、それで識別する。もしくは設定ファイルか何かに書いておく。
WinとUnixを識別できればそれでいい、ってんなら>412で問題ない。
php_uname()関数の例にもディレクトリ・セパレータでOSを判別するコードが載っている。

414:nobodyさん
09/03/19 00:19:30
>>379
それ。
is_numeric()は"."を許したよーな気がする。
気をつけたほうがいいよ~

D:\tools\php-5.2.8-Win32>php -r "var_dump( is_numeric( '1.5' ) ) ;"
bool(true)



415:nobodyさん
09/03/19 00:31:24
((string)(int) $string === $string)
これはどう?int判定

416:nobodyさん
09/03/19 00:34:08
PHP_OS

417:nobodyさん
09/03/19 00:35:21
>>399
行数っていうのとは違うけど
コメントを書かなくていいくらいに分かり易い
っていうのを目安にするといいっていう考え方もあるね。

コメントで「○○を処理する」とか入れるくらいなら
そのまとまりをprivateなメソッドにする感じ。


まぁ好き嫌いもあるけどねー。


418:nobodyさん
09/03/19 00:46:01
>>285

OOPっていう概念よりも
そもそもプログラミングにおいてクラス使うと何が便利?
って考えたほうが分かりやすいかもしんない。


419:nobodyさん
09/03/19 00:49:33
DIRECTORY_SEPARATORでOS判定なんてどう考えてもスジが悪いだろ
常識で考えて・・

420:nobodyさん
09/03/19 01:56:19
>>414
ctype_digit
でいいんじゃないの、バージョン注意だけど

421:nobodyさん
09/03/19 09:10:09 8+csUcRF
fsockopenのテストをしているのですが、
ローカルのサーバ(localhost)上ではオープンできないのでしょうか?

if(!$sock = fsockopen("localhost",80,$errNo,$errStr,10)){
echo "エラーです";
}

として開こうとしても、エラーになります。

422:nobodyさん
09/03/19 09:28:15
なんのために$errNoと$errStrを指定してるんだ

423:421
09/03/19 09:32:30
localhostを127.0.0.1にしたら出来ました・・。

424:nobodyさん
09/03/19 09:39:19
もしかして環境はVistaか?
最近のアップデートで、hostsを書き換えてlocalhostを消すものがあったと話題になってた。

3/10のWindows Defender更新でhostsが書き換えられる!? - スラッシュドット・ジャパン

URLリンク(slashdot.jp)

425:nobodyさん
09/03/19 11:06:59 GwakzSEQ
【PHPのバージョン】php5.2.8
【質問内容】
クラスのメンバ変数についての質問です。
あるメンバ変数が宣言されたかどうかを調べるにはどうしたらよいでしょうか?
代入はされていないのでissetではダメでした。

426:nobodyさん
09/03/19 11:10:22
get_object_vars
もしくは
get_class_vars

427:425
09/03/19 11:16:32
>>426
超速でありがとうございます
さっそくテストコードにかかってきます。

428:nobodyさん
09/03/19 11:18:46
is_nullのほうがいいよ

429:nobodyさん
09/03/19 11:37:30
issetのほうがいいよ

430:nobodyさん
09/03/19 12:38:06
普通こっちじゃねぇの。
URLリンク(jp.php.net)

431:nobodyさん
09/03/19 13:18:49
h1タグの部分を置換したいです。
もっと、スマートの方法ありますか?
(h1の要素は不特定、ない場合もあります。)

<?php
$file = "
<html><body>
<h1 id=\"news\" name=\"news\" style=\"size: medium;\">WBC速報</h1>
<p>4回裏 2 - 0</p>
</body></html>
";
preg_match_all('/<h1[^>]*?>(.*?)<\/h1>/is',$file , $match);
$tag = $match[0][0];
$title = $match[1][0];
$file = str_replace($tag,"<div>{$title}</div>", $file);
echo $file;
?>

432:nobodyさん
09/03/19 13:21:15
訂正 スマートな方法

433:nobodyさん
09/03/19 13:32:20
>>420
ctype_digitってマイナス値の場合falseになるから使えなくね

434:nobodyさん
09/03/19 14:15:42
>>431
何に置換したいのか書いてないよ

あと>>1

435:nobodyさん
09/03/19 21:43:36
まだやってんのか。
strval(intval($str)) === $str
でいいだろ、面倒くせえ。

436:nobodyさん
09/03/19 22:14:40
>>435
これはひどい

437:nobodyさん
09/03/19 23:11:37
>>420
その関数はバグがあるから使い物にならない

438:nobodyさん
09/03/20 04:10:54
URLリンク(phpspot.org)

439:nobodyさん
09/03/20 04:22:45
>>438
この人前も誰かにつつかれてキレてたよなw

440:nobodyさん
09/03/20 08:33:43
三行でまとめてくれ

441:nobodyさん
09/03/20 08:38:37
お前と同じで内容もロクに読まずに転載してるだけですよ、と言ってあげたい

442:nobodyさん
09/03/20 08:40:35
phpspotのアフィ厨がきもいのは確かだが、
「悪名高きda.me..@docomo.ne.jpを引っ掛ける一方で、dankogai+regexp@gmail.comを弾いてしまう」
ってのはどうなん?
ドキュモでda.me..@docomo.ne.jpが取得できる以上、
それをウェブアプリ側ではじくわけにはいかないじゃん
RFCを守るべきはdocomoであって、ウェブアプリは現実に準拠するしかない

443:nobodyさん
09/03/20 08:45:13
phpspotの人は正規表現について語らないほうがいいのでは
URLリンク(labs.cybozu.co.jp)

このトラウマを刺激されたから過剰反応したんだなw


444:nobodyさん
09/03/20 08:47:16
Diggのトップページやdel.icio.us/popularで表示されたページの概要を訳しているだけなんだから、
せめて自分で確かめてから紹介しようよw
>>phpspot

445:nobodyさん
09/03/20 08:57:25
>442
dankogai+regexp@gmail.com はRFCに準拠している。
ドキュモを弾くかはか方針次第だが、このアドレスを弾いてはいけない。

元々phpspotの提示していたコードが役に立たないのは確か。
出力例が「正しいかもしれない」「間違ってるかもしれない」な事からも明らか。
こういうのは「絶対正しい」「間違ってるかも」、もしくは「正しいかも」「絶対間違ってる」のいずれかを返さなければ糞の役にも立たん。

446:nobodyさん
09/03/20 09:47:11
準拠してようがおれはそんなメアドは通さねーぞwwwwwwwwwwwwwwwww

447:nobodyさん
09/03/20 09:59:17
URLリンク(d.hatena.ne.jp)

448:nobodyさん
09/03/20 10:02:52
プロバイダのメールアドレスをなるべき通したい場合は別にそこまでこだわる必要なし
+\とか記号を入れるメアドなんて普通の人は持ってないだろ

449:nobodyさん
09/03/20 10:23:25
>448
なんというか、ここにも馬鹿が多いな。
「食べやすい大きさに野菜を切るには」という記事に「カレーは野菜が大きいほうが美味しい」とか言ってるようなものだぞ、それ。

450:nobodyさん
09/03/20 10:31:42
それ話が通ってるじゃん

451:nobodyさん
09/03/20 10:49:03
RFCに準拠してさえすればいいってもんじゃない

452:nobodyさん
09/03/20 10:50:52
>>449
プロバイダやgmailを除いたメジャーなアドレスで記号付きのメールアドレスを取得できる所教えてください


453:nobodyさん
09/03/20 11:54:25 MICYHS4W
【OS名】debian etch
【PHPのバージョン】php5.2.0-8
PukiWiki Plus!で「ajaxtree.inc.php」プラグインを使おうとしたのですが
キャッシュファイルの作成が正常に行われず色々と調べてみていたところ
下記の部分でよくわからない動きをしていることがわかりました。 (ajaxtree.inc.php 198行目付近)

foreach ($pages as $page) {
if ($leaf[$page] === false) {
plugin_ajaxtree_update_cache($page);
}
echo $page . " " . $leaf[$page] . "<br>\n"; //debug
}

具体的には「plugin_ajaxtree_update_cache」関数が一度でも実行されると
その時点でループが終わってしまい配列の残りの要素が処理されなくなってしまうといった感じです。
(関数から戻ってきたあとのechoまでは処理されています)
ループ後の「$pages」の値には特に変化が無く、エラーも発生していませんでした。
なぜforeachが途中で止まってしまうのかわからずに困っています。
この場合、どういった原因が考えられるのでしょうか?


454:nobodyさん
09/03/20 11:55:01 uQ1BNnXR
トラックバックやpingの受信機能を作っています。

fsockopenで送信されたPOSTやGETを受け取ると思うのですが、
連続送信防止の処理って入れられるのでしょうか?

WEBページのフォーム処理からだと、cookieで制御できると思うのですが
fsockopenは出来ないような気がしています。

455:nobodyさん
09/03/20 12:00:40
>>453
display_errors
error_reporting
>>454
内容を比較すればいいのでは?

456:nobodyさん
09/03/20 12:02:10
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>449
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |

457:nobodyさん
09/03/20 12:06:26
小飼の正規表現はda.me..@docomo.ne.jpを通せないだろ
RFCに準拠するばかりで現実で使えないんじゃ同じようにクソ

458:453
09/03/20 12:31:15 MICYHS4W
>>455
ありがとうございます。
該当するコードに特にエラーなどは発生していませんでしたが解決しました。
配列を関数の戻り値の参照として受け取っていたためおかしな挙動をしていたようでした。
$pages =& plugin_ajaxtree_get_pages();
失礼いたしました。


459:449
09/03/20 12:38:12
docomoの非準拠アドレスを通すかとか、gmailの無限アドレスを通すかとかは、メールアドレス正規表現とは別の問題だろ?
実装の問題じゃない。ビジネスロジックの問題だ。何をどこまで許容するかは技術の問題じゃない。
コーディングする奴が勝手に決めてはいけない問題だし、従って前提条件が提示されないと「正しい」コードなんぞ書けっこない。
何が「正しい」のか、仕様が決まってないんだから当たり前だな。

「正しい」メールアドレスを「RF2822準拠」と定めるなら、PHPSPOTや百式のコードは明白に間違っていて、小飼のコードは正しい。
docomoの非準拠アドレスを許容しなければいけない、とか、gmailの無限アドを拒否しないといけない、という条件下なら小飼のコードは間違っているだろう。

実際、小飼の出力メッセージはちゃんと「RFCに準拠しているか」で出るだろ。
あのコードが解こうとしている判定問題は「RFCに準拠しているか」であって、「一般社会で通用するメールアドレスか」じゃない。
それをてめえらは勝手に問題を取り替えてガタガタ抜かしてるだけなんだよ。これだからPHPerは馬鹿だとか言われるんだ。
RFCに準拠していないアドレスが通ったり、準拠しているアドがNGだったら文句を言うべきだが、それ以外は筋違いだ。

460:nobodyさん
09/03/20 12:41:36
じゃなんで正規表現をblogに書いちゃいけないの?

461:nobodyさん
09/03/20 12:47:51
>>459
RFCに準拠してる正規表現はブログに書いてもOK
RFCに準拠してない現実に即した正規表現はブログに書いたらNG
ってことですね、わかります

462:nobodyさん
09/03/20 13:09:05
>>459ってブログの張本人だろ

463:nobodyさん
09/03/20 16:03:22
>>459
自分ルールを持ち出したのは「PHPer」とか言って悦に入っている人だよな。
っていうか誰この人?

464:nobodyさん
09/03/20 16:20:44
ほとんどの無料有料サービスの登録時にRFCに100%準拠されたメアドは使えない件

465:nobodyさん
09/03/20 16:21:47
._-0-9a-zA-Zぐらいしかたいていのサービス登録では使えない件
何が言いたいかというとRFC必死だな(笑)

466:nobodyさん
09/03/20 18:48:51
弾もPHPERも文末判定に$を使っているが
$は行末判定なので最後に改行コードが付いてても通ってしまう。
ちゃんと\zを使えよ
弾&phpspotともどもm9(^Д^)プギャー!

467:nobodyさん
09/03/20 18:51:14
$が末尾の改行コードに一致するのってPHPだけじゃなくて?

468:nobodyさん
09/03/20 18:56:31
preg_matchはperl互換だからそれはないだろ

469:nobodyさん
09/03/20 19:01:48
perlが死滅した、といっても、
ある程度のシェアを取った言語なので、
perlの正規表現の文法は他の言語にも
そのまま受け継がれていくわけだな。

つまり勉強したことが無駄にならず
再利用できると。

シェアととると、こういう「いいこと」があるんだよな。

470:nobodyさん
09/03/20 20:16:44
何年か前にperl厨が騒いでた
その上でどんなスクリプトでも走るエンジンみたいのどうなったんだよ
えーこら

471:nobodyさん
09/03/20 22:34:03 oZ8fGjsV
javascriptがオンかオフかの情報を知りたいのですがどのような方法が妥当かわかりません
以下のような方法も考えたのですがページを移動するか更新しないとクッキーを読めないので困ってます
どなたかアドバイスお願いいたします


javascriptでクッキーを発行する

クッキーが読み込めたらjavascriptがオン・読み込めなければオフ

472:nobodyさん
09/03/20 22:44:55
>471
処理の順序を考えれば分かるが、無理。

473:nobodyさん
09/03/20 22:53:31
ajaxでやればできるでしょ

474:nobodyさん
09/03/20 23:15:48
そもそも、ページを移動も更新もしてない状態で、サーバ側でJavascript有効かどうか判断しなきゃ
いけない状況って何だろう?

475:nobodyさん
09/03/20 23:17:56
その状況を考えられないならこの業界で食えませんよ

476:nobodyさん
09/03/20 23:23:33
ajaxでリクエスト飛んできたらon、飛んでこなかったらoff

477:nobodyさん
09/03/20 23:42:53
>>475
なんで?
Ajax使う前提なら、こんなことで悩まんでしょ。
有効な時にメッセージ出したいなら、Javascriptで出せば良いし、使えない時にメッセージ出したいなら
NOSCRIPT使えばいいし。

トップページへのアクセスだけで、Javascriptを有効にしてるかどうかサーバ側に記録を取りたいとか、そんな感じ?



478:nobodyさん
09/03/20 23:59:59
>477
だとしても、JavaScript経由で鯖にアクセスさせるだけだしな。
PHPではできない、というのは正しい。
まあ、質問が抽象的すぎるんでなんとも言えん。どうして質問掲示板の類の質問者は情報を出し惜しみするんだか。

479:nobodyさん
09/03/21 00:11:32
>>478
それはいいがかり。
おまえだって18世紀にペストにかかったら
「ネズミが運んできた病原菌のせいで感染しました」
とは医者には報告しないはずだ

480:nobodyさん
09/03/21 00:49:23
たとえのほうがわかりづらいってどういうことよ

481:nobodyさん
09/03/21 02:16:36
www

482:nobodyさん
09/03/21 02:24:45
そうか?非常に分かりやすい例えに感じたけど

483:nobodyさん
09/03/21 02:34:45
479=482wwwww

484:nobodyさん
09/03/21 19:33:45 Kz7V9K+/
掲示板を作るのですが共同で作る場合、どのようなシステムを導入するといいですか?

485:nobodyさん
09/03/21 19:35:17
>>484
git

486:nobodyさん
09/03/21 22:18:16
サーバサイドのプログラムが永久ループしたらどうやって止めるんですか?
そういうのがあると、レンタルサーバ屋に怒られるんですか?

487:nobodyさん
09/03/21 22:29:13
コンセント抜けばおk

488:nobodyさん
09/03/21 22:35:15
>>486
30秒で止まる。

489:nobodyさん
09/03/21 22:39:17
設定次第だがデフォルトは30秒

490:nobodyさん
09/03/21 22:46:46
止めるのは鯖屋の仕事だから好きなだけ無限ループさせておk

491:nobodyさん
09/03/21 23:10:45
とっくに想定済みなんですね。
ありがとうございました。

492:nobodyさん
09/03/21 23:18:28
まぁ鯖潰したら損害賠償だけどな

493:nobodyさん
09/03/21 23:38:44
>>492
そんなヤワな鯖ねーよ

494:nobodyさん
09/03/21 23:40:05
>>492
ちょっと中級者ぶりたい年頃だけど外してるの図

495:nobodyさん
09/03/22 01:29:46
いきなり本番とかやらなければ普通起こさないと思うけど>無限ループ

496:nobodyさん
09/03/22 01:34:00
よくCMSなんか見てると、全てのファイルの頭に

/**
*
* @package hogehoge
* @version $Id: index.php 0000 2010-01-01 14:00:00Z hogehoge$
* @copyright (c) 2010 fugafuga
* @license URLリンク(opensource.org) GNU Public License
*
*/

こんなの見かけるけど、これは手動で書いてるんですか?
まさかね?

497:496
09/03/22 01:35:02
ID

498:496
09/03/22 01:35:33 pWqW8Yq7
また間違えたorz
ごめんなさい

499:nobodyさん
09/03/22 03:37:07
>>494-495
マジレスつまらん

500:nobodyさん
09/03/22 05:17:23
すいません。CMSなどはHTMLファイルを生成するんですよね
メニューに一項目増えた場合 全部のHTMLページを
書き換える処理ってしてるんですか?

501:nobodyさん
09/03/22 06:09:27
>>500
テンプレートにして動的にしてる場合が多い気がする。
スタティックなHTML吐くのはあまり見たことがない。

502:nobodyさん
09/03/22 06:19:05
>>501
つまりmod rewriteってことですか?
素人ですいません。

503:nobodyさん
09/03/22 06:19:37
mod_rewriteがどう関係あるんだ?

504:nobodyさん
09/03/22 06:22:33
つまりHTMLじゃないけれど、HTMLとしてって方法ですか?
自分はプログラムで呼び出すか、SSIしか思い浮かばないです


505:nobodyさん
09/03/22 06:23:55
プログラムで呼び出せば?

506:nobodyさん
09/03/22 06:25:11
CMSってHTMLファイルを作っていくイメージがあったんです
すいません。ただ、require include で呼び出したページは
グーグルランクつきにくいです
SSIにしてみたところ、それよりはわずかにつきやすかったです
CMSがHTMLファイルなら、どうやって外部からメニューを
呼び出しているかわからなかったので

507:nobodyさん
09/03/22 06:28:00
別に動的でもSEO考慮する方法はいくらでもあるべ?

508:nobodyさん
09/03/22 06:30:30
>>507
具体的に教えて下さい お願いします
もっどりライトは厳しい感じがしました 結果が

509:nobodyさん
09/03/22 06:31:26
結果がって?

510:nobodyさん
09/03/22 06:32:34
>>509
グーグルランクのつきが明らかに悪いです(個人の弱小HP)
そしてSSIに変えたところ、3つほどつきました
現在SSIのほうがPHPによる外部ページ呼び出しよりランクがつきやすいです
内部は全く変えてないです

511:nobodyさん
09/03/22 06:33:30
じゃSSIでいいじゃん

512:nobodyさん
09/03/22 06:37:40
(;^Д^) そうですか

513:nobodyさん
09/03/22 07:18:32
そう

514:nobodyさん
09/03/22 09:24:55
ひどい自演を見た><

515:nobodyさん
09/03/22 09:59:58
>>492=499
自分はマジレスじゃなかったことにしようとして外してるの図

516:nobodyさん
09/03/22 10:04:27
>>492がマジレスなわけないだろ。初心者は半年ROMれよ

517:nobodyさん
09/03/22 10:06:20
またその話かよ
A型はひつこいな

518:nobodyさん
09/03/22 10:11:46
ホントに鯖潰したら、普通に損害賠償だけどな。

519:nobodyさん
09/03/22 10:11:46
初心者(笑)は半年ROMれ(笑)よ

520:nobodyさん
09/03/22 10:24:48
普通は損害賠償とか面倒なことに発展する前に、凍結されたり追い出されたりする

Nucleusでアクセス解析いれたら劇重になって、翌日、鯖停止->強制解約になったよ。オレ

521:nobodyさん
09/03/22 10:24:54
>>515
図星で逆ギレの図

522:nobodyさん
09/03/22 10:56:19
>>492=499=521
m9

523:nobodyさん
09/03/22 11:33:37
粘着すぎる いつもむかむかしてるのかな

524:nobodyさん
09/03/22 11:39:35
邪魔なんだよね~
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

525:nobodyさん
09/03/22 11:46:58
>>484
バージョン管理システムを導入するといいです

>>496
いくつかのIDEでは/**と入れて改行すると自動で作ってくれます
EclipseのPHPプラグインあたりだと
最初に関数を定義してからその上に/**を入れて改行すると
下の関数を見て引数があったら@param
返り値があったら@returnを生成してくれます
その他については必要であったら自分で記述するか
デフォルトの値として設定可能なものなら設定するしかありません

526:nobodyさん
09/03/22 11:49:05 dhNIUg3n
多次元配列へのアクセスを動的にやりたいのですが、
どうすればいいですか?

get_multi_array($array,array('hoge','fuga','poge'))
→$array['hoge']['fuga']['poge']を取得

こういう動作をさせたいのです

527:nobodyさん
09/03/22 12:30:00
>>492=499=521=523=524
立場が悪くなって第三者のフリをしようとしてるけど外してるの図

528:nobodyさん
09/03/22 12:43:51
>>527
邪魔なんだよね~
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

529:nobodyさん
09/03/22 12:56:54
>>528
無視できない時点で同類だって教わらなかったの?
というより自演バレバレだよ初級者君(笑)

530:nobodyさん
09/03/22 12:57:11
おまえらケンカしろ byひきこもり塾っぽいの

いいんだよ byスレ回り先生

自作自演する若者はためが無い by湯浅誠

自作自演格差社会 ~492のレス能力格差がスレッドを引き裂く

>>528は、新自由主義者
何でも排除して、格差を作ろうとする


531:nobodyさん
09/03/22 13:10:43
>>529
邪魔なんだよね~
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

532:nobodyさん
09/03/22 14:07:27 ofSdd/CM
モバイルからなのでID固定できませんが質問です
"<a href='".$value."'>"などとしたときに
htmlspecialcharsだけでは変数にscript:~が含まれていた場合に回避できませんが
変数の前に"URLリンク(sample.com)"とURLがあれば問題ないのでしょうか
実際Firefox,safariなどでは普通にnot foundになります

533:nobodyさん
09/03/22 14:09:38
>>526
こんなのどう?連想配列でも多分問題ないと思う。

<?php
function get_multi_array(array $a, array $keys) {
$tmp = &$a;

foreach ($keys as $key) {
if (! is_array($tmp) || ! array_key_exists($key, $tmp)) return null;
$tmp = &$tmp[$key];
}

return $tmp;
}

// 以下テスト
$array =array(
array(
array(1,2,3), array(4,5,6),
),
array(
array(7,8,9), array(11,12,13), array(14,15,16)
)
);

var_dump(get_multi_array($array, array(0, 1, 2)));


534:nobodyさん
09/03/22 14:32:22
>>529は見えない敵と戦ってるとみた

535:nobodyさん
09/03/22 14:33:52
こんな過疎板で煽り合って自分が上にしたい奴ってうつ病だろな

536:nobodyさん
09/03/22 15:07:18
>>535
よくぞ見抜いた・・

社会不適合者な俺万歳

537:nobodyさん
09/03/22 17:29:33 XWTxCtFo
test

538:nobodyさん
09/03/22 17:35:05 XWTxCtFo
<form action="log/200902.htm" method="POST">
<input type="text" name="title" value=""><br>
<textarea cols="80" rows="7" name="text"></textarea>
<input type="submit" value="send">
</form>
<?php
$title="<h2>".$_POST["title"]."</h2>";
$text='<div class="text">'.$_POST['text'].'</div>';
if ( get_magic_quotes_gpc()) {
$title = stripslashes($title);
$text=stripslashes($text);}
$text = nl2br($text);
$log = 'log/200902.htm';
$lock = 'lock.txt';
$lock_fp = fopen($lock,"w");
flock($lock_fp,LOCK_EX);
$old_log = file_get_contents($log);
$fp = fopen($log,"w");
fwrite($fp,$title);
fwrite($fp,$text);
fwrite($fp, $old_log);
fclose($fp);
flock($lock_fp,LOCK_UN);
fclose($lock_fp);
?>
これ、とあるサイトから引用してきたスクリプトなんですけど、どうやっても$_POSTの値を取得できずにlog/200902.htmの内容が<h2></h2><div class="text"></div>と内容が空になってしまいます。
POSTの値を取得するにはどうしたらいいんでしょう?どなたか知識のある方、ご教授下さい。

539:nobodyさん
09/03/22 17:37:44
とりあえず、<?php の直後で
var_dump($_POST);exit;

540:nobodyさん
09/03/22 17:39:58
それと form のアクションプロパティはそれでいいのか?>action="log/200902.htm"
自身に送るなら空白

541:nobodyさん
09/03/22 17:50:34
>>535
よくぞ見抜いた・・

社会不適合者な君万歳

542:nobodyさん
09/03/22 17:52:24 XWTxCtFo
早速ありがとうございます。var_dump($_POST);exit;としてみたのですがarray(0) { }としか表示されません...
formのアクションプロパティは合ってるかと思いますが…。log/200902.htmというファイルに書き込みたいので。

543:nobodyさん
09/03/22 17:55:25
formのactionには
データを渡すスクリプトのパスを書くんだよ

どのファイルに書き込むかとかは、
スクリプトの方で処理すること

$_POSTの中身が空の配列ってことは、
データが渡されてないってこと

544:nobodyさん
09/03/22 18:02:21 XWTxCtFo
あ!formのaction属性を空にしてみたらこんな表示が出ました。
array(2) { ["title"]=> string(4) "test" ["text"]=> string(4) "test" }

これはデータが渡されてるということなんでしょうか。しかしlog/200902.htmの中身は相変わらずです…。

545:nobodyさん
09/03/22 18:09:39
exitしてるからログは書き込まれないよ
それはそうとまずHTMLを理解しないと

546:nobodyさん
09/03/22 18:12:30 XWTxCtFo
すみません…。あまりにも無知でした。exitすると処理が終了するということはリファレンスサイトで見たはずなのに…。恥ずかしいです。
HTMLにも理解がありませんでした。重ね重ね恥ずかしいかぎりです…。

547:nobodyさん
09/03/22 18:17:48 XWTxCtFo
できました!ご教授下さった方のいう通りにしたらlog/200902.htmに書き込むことができました!
本当に無知な私にここまで親身になってくれてありがとうございました。本当に感謝します。
また何かわからないことがあったら自分で調べて、それでもわからなかったらまたこのスレにお世話になると思います。その時はどうか暖かい目で見てやってください…

548:nobodyさん
09/03/22 18:27:06
ログファイルがhtmってのなんだかな~

549:nobodyさん
09/03/22 18:34:08 XWTxCtFo
はい。htmlにさせて頂きました...

550:nobodyさん
09/03/22 18:45:54
いやそういうことをいってんじゃないんだけど
まあいいや

551:nobodyさん
09/03/22 19:52:51
普通はログはテキストのまま、つまり記事本文だけを保持する。
例えば2chは、以下のようなテキスト形式でデータを保存している(本当は違うんだが、まあ割愛)。
 nobodyさん<><>2009/03/22(日) 18:34:08 ID:XWTxCtFo<> はい。htmlにさせて頂きました... <>
そのログファイルの内容を読み込んで、HTMLとして整形して書き出すPHPで本文を表示させるわけだ。

HTMLで保持しない理由はいくつかある。パッと思いつくのは
柔軟性
 例えば、表示されるHTMLを別の形にしたいとか、RSSも書き出したい、という時に再利用しづらい。
 記事削除passをつけたいとか、データ保持先をDBにしたいとか、色んな拡張性が失われたりもする。
セキュリティ
 本文に<script>alert('うけけけけけ');</script>と書かれたらどうなる?とか。
 どちらにせよ対策は必要なのだが、ログをHTMLとして持っていると、どこで対策すりゃいいのかが曖昧になりやすい。
容量
 無駄にデカくなる。大した問題じゃないが。

552:nobodyさん
09/03/22 20:56:06
実体参照化してからHTML化すれば?

553:nobodyさん
09/03/22 23:17:35
やり方にもよるかな
ログをhtmlとして書き出す掲示板はkentも作ってたな

554:nobodyさん
09/03/22 23:23:17
やり方にもよるって・・

ログをHTMLとして書き出しておくのは
論外といったら失礼かもしれないけど、
明らかに保守性なさすぎじゃないか?


555:554
09/03/22 23:29:53
書き出しておく・・じゃなくて
保持しておくだった

556:nobodyさん
09/03/22 23:30:00
テンプレートとログを分けておいて、記録するときにテンプレートを元にhtml化すればおkだけどな

557:nobodyさん
09/03/22 23:30:47
XMLみたいなもんと思えば、アリじゃないかとも思う。
一件一行で、ヘッダとフッタを除いた状態で保存するなら、そんなに保守性もわるくないと思うが。

558:nobodyさん
09/03/22 23:34:55
閲覧が多くて書き込みが少ないのならhtml化してもいいかな

559:nobodyさん
09/03/22 23:43:37
あめぞうスクリプト見れ

560:nobodyさん
09/03/22 23:49:52 cLpptsUH
現在自分が作成しているPHPとMySQlを使ったログイン認証システムで
穴がないか不安になってきたので、質問します。
要点のみを記載します。

・ID(又はメールアドレス)とパスワードをフォームに入力して、
 MySQL内の情報を照合
・正しければトークン用のコードを発行し、ユーザ情報を更新
 (テーブルのtokenフィールドに作成した値を追加)
・その他、セッション変数にはログイン時のUAとIPアドレスを代入
・各ページアクセス毎にセッション情報が正しいかをIFで調べる
(会員情報編集などの場合、ユーザIDとトークンコードが正しいか照合)
・パスワードはmd5で保存

と言うことをしています。他に「これもしろ」と言うことはありますでしょうか?

561:nobodyさん
09/03/22 23:50:51
ソースを見せるのが早い

562:nobodyさん
09/03/22 23:51:39
ID(又はメールアドレス)とパスワードをフォームに入力して、
 MySQL内の情報を照合


(1)この時に、SQLインジェクション対策はされているのか?

563:nobodyさん
09/03/22 23:52:30
md5は破られるのでsha2にしたほうが無難

564:nobodyさん
09/03/22 23:52:40
>>560
そういうしつもんすると>>562みたいな質問がきりがなく出てくるのでソース出したほうが早い

565:nobodyさん
09/03/23 00:10:54
>>533
やっぱり再帰ですね
ありがとうございました

566:560
09/03/23 00:16:39
>>562
しています。まず入力値にhtmlspecialcharsをかけて
DBアクセス時にmysql_escape_stringをしています。

ソースに関してですが、莫大な量になるので掲載を控えます。
それにソースや構文の組み立てを聞きたいのではなく、
自分の足りない知識・誤っている知識を指摘していただきたく思い、質問しました。

567:nobodyさん
09/03/23 00:29:46
( ゚д゚)

568:nobodyさん
09/03/23 01:02:57
>>566
>まず入力値にhtmlspecialcharsをかけて

らめぇええええ

569:nobodyさん
09/03/23 01:35:27
>>565
否。ただのループ。

570:nobodyさん
09/03/23 02:53:59 RPfvHZ0v
test.txt
> 0123456789

test.php
> $fp = fopen("test.txt", "r");
> while(!feof($fp)) {
>   print fread($fp, 1);
>   flush();
>   sleep(1);
> }
> fclose($fp);

test2.php
> $fp = fopen("test.txt", "w");
> fwrite($fp, "aaaaaaaaaa");
> fclose($fp);
>
> $fp = fopen("test.txt", "r");
> print fread($fp, 10);
> fclose($fp);

test.phpが走ってる最中にtest2.php走らせても
test.phpの出力にtest2.phpの書き換えは反映されなかった。

読み出しに関してはルーズな実装してもOKって事?

571:nobodyさん
09/03/23 05:27:55
flushされるタイミングの都合で、たまたまじゃないかなぁ。

572:nobodyさん
09/03/23 05:29:12
良く見たら明示的にflush は、してるのか。
ごめん。

573:nobodyさん
09/03/23 22:30:27
>>560とは別人で悪いんだけど、気になったからよこやり入れさせて。

>>568
ID(もしくはメールアドレス)は、必ずしもブラウザで表示するわけじゃないから、
 ・DB内の情報と照合する時 → mysql_escape_string(mysql_real_escape_string)
 ・ブラウザに表示する時   → htmlspecialchars
みたいにする、ってことでおk?
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'<'って保存されてしまうからっていうことかな。
見当違いだったらすまん。

574:nobodyさん
09/03/23 22:33:45
連続書き込みスマソ

>>573訂正
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'&lt;'って保存されてしまうからっていうことかな。

575:nobodyさん
09/03/23 22:38:01
そうやって保存されてしまうからっていうのと、
保存されてしまうことによって再利用するとき不便になるからだね

576:nobodyさん
09/03/23 22:58:16
test

577:nobodyさん
09/03/23 23:07:14
>>575
なるほど、いい勉強になった。
ありがとう。

578:nobodyさん
09/03/23 23:45:08 uVBii4+5
サーバを再起動したらapacheのerr.logに
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll'
と同じようなログがたくさん出ます。
でも、該当のファイルは存在します
何が原因でしょうか?

579:nobodyさん
09/03/23 23:53:02
>>573-575
でもさ、ID・メールアドレスを更新する時に<を使う場合ってあるの?
IDはだいたい半角英数字だし、メールアドレスもそうでしょ?

580:nobodyさん
09/03/24 00:01:55
どこでサニタイズするかは勝手だが、
100%ってことはないので出口でサニタイズしろってエロい人が言ってた

581:nobodyさん
09/03/24 00:17:34
サニタイズニダ!

582:nobodyさん
09/03/24 00:41:05
>>578
PHPのバージョンは?

DOS窓から、php -mや、php -iって打っても、エラー出る?

5.2.9-1なら
> Please note that the cURL related function is disabled when open_basedir or safe_mode enabled.
ってニュースが出てたけど、関係しそうなとこある?

583:nobodyさん
09/03/24 04:21:02
すいません。PHP勉強して半年になります。順調に進んでいたのですが
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
こうすると、なぜかバグルのですが、なぜですか?


584:nobodyさん
09/03/24 04:25:00
そりゃechoですからね
出力だけしてくださいよ

585:nobodyさん
09/03/24 04:25:16
それは、君が>>1を読めない子ちゃんだから。

586:nobodyさん
09/03/24 04:26:30
すいません、なぜこれでバグになるかわからないんです
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
print_r($a);
↓結果
Array ( [0] => jaa )

587:nobodyさん
09/03/24 04:26:58
>>584
おまいさんは、輪をかけてドアホーみたいだけどな

588:nobodyさん
09/03/24 04:28:52
>>586
バグってないじゃん。仕様通り
文字列の1文字目を置換してる

589:nobodyさん
09/03/24 04:30:23
バグって増すよ
<?php

$a[0] = 'aaa';
$a[0][1] = 'jjjjk';

print_r($a);
Array ( [0] => aja )

590:nobodyさん
09/03/24 04:32:35
>>589
バグじゃないよ。
$a[0]は文字列
$a[0][1]はその2文字目を代入しようとしてる文字列の1文字目で置換せよ
だから、$aは1要素配列のまま。
そんだけ。

591:nobodyさん
09/03/24 04:34:04
>>590
そうなるんですか。知りませんでした。今までやってきて
そんな配列あったんですか 適当に使ってました

592:nobodyさん
09/03/24 04:34:50
>>591
マニュアルに書いてあるよ。

593:nobodyさん
09/03/24 04:35:22
自分は初心者なので、配列=箱としか書いてあるものをみたことが
なかったんです。助かりました>>1-589

594:nobodyさん
09/03/24 04:39:30
変数を array で初期化しないで、いきなり配列として使うのは、どうも生理的・本能的にダメ。

595:nobodyさん
09/03/24 04:42:07
arrayで初期化しても置き換えられますよ
自分初心者だったのでこんなのあったんだとびっくりしました

596:nobodyさん
09/03/24 04:46:27
残念ながら>>594が言ってるのは次元の違う話だ
PHP使いは適当がモットーだから気にしなくていい

597:nobodyさん
09/03/24 04:49:11
>>596
そうですか。今まで掲示板とブログ作ったんですか
そのような配列の使い方を書いてあるのがみたことなくて
気になりました

598:nobodyさん
09/03/24 07:45:46
2重配列って呼び方であってる?

599:nobodyさん
09/03/24 07:53:32
2次元配列じゃないよ。そのケース。
単に、1次元配列の要素が文字列で
その文字列にstring offsetでアクセスしてるだけ

600:586
09/03/24 08:34:05
難しいなあそんなの出てこなかった
初心者本には、
あくまで 配列は個々の箱だと意識してました
データ型を指定しなくていいように、箱も好きに使っていいと
思ってました。


601:nobodyさん
09/03/24 08:34:37
そりゃ初心者本だからだろ

602:nobodyさん
09/03/24 08:52:05
>>589
バグ

>>590は下のコードと勘違いしてるんじゃないのかね
$str = "12345";
$str[0] = "a";
echo $str; // a2345

603:nobodyさん
09/03/24 08:55:32
>>602
いや、だからそれとやってることは一緒だろ

604:nobodyさん
09/03/24 08:56:49
602が勘違いしてるんじゃないのかね

605:nobodyさん
09/03/24 09:01:48
コンパイラ言語はデータ型ちゃんと指定するから
静的な変数(配列)の型定義というのは
型に応じたメモリ領域を確保するということ(Javaでint型なら4バイトlong型なら8バイト等)
PHPはインタプリタだからその辺を動的にやってるわけ
この辺をちゃんと理解してないと正しいイメージはわかない
配列は箱ではなく連続したデータというイメージが正しい
メモリ上ではそのように配置されている

606:nobodyさん
09/03/24 09:45:45 VfITkfEn
>>582
versionは5.2.3だったと思います
C:\php>php -m としたら、「isqlt09a.dllが見つからなかったため、このアプリケーションを開始できませんでした。
インストールし直すと解決する場合があります」 とアラートが出ました

C:\php>php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ifx.dl
l' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_oci8.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pspell
.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_sybase
_ct.dll' - 指定されたモジュールが見つかりません。

C:\php>php -pでも同じ結果です
見つからないって言われてるモジュール、extの中にちゃんと存在してるんですが、、

607:586
09/03/24 19:06:44
誰かプロの人
$aiueo[0] = "a";
$aiueo[0][0] = "aa";
とPHPで入れると置き換わったりする理由を書いて下さい


608:nobodyさん
09/03/24 19:09:04
>>606
記憶違いかも知れんが、依存関係の都合でライブラリを読み込む順序によって、
そんなメッセージがでたかも。

以前、Windows版のPHPってサンプルのphp.iniの順番だとエラーが出てずいぶん
悩んだことがある。

609:nobodyさん
09/03/24 20:03:31
>>607
>>1

610:nobodyさん
09/03/24 20:04:24
>>606
書いてないから確認しとくけどinclude_pathの設定は?

611:nobodyさん
09/03/24 20:09:50
>>607
置き換わる理由は仕様だから。それだけ。

$a[0] = 'abc';
$as = 'abc';
if ($a[0][0] === $as[0]) {
echo ' $a[0][0] equal $as[0]' . " <br />\n";
}
echo "target :" . $as . " = " . $a[0] . " <br />\n";
echo "offset0:" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1:" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2:" . $as[2] . " = " . $a[0][2] . " <br />\n";

$as[1] = $a[0][1] = 'xxxxxxx';
if ($a === array($as)) {
echo ' $a is array of $as' . "<br />\n";
}

echo "replaced:" . $as . " = " . $a[0] . " <br />\n";
echo "offset0 :" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1 :" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2 :" . $as[2] . " = " . $a[0][2] . " <br />\n";


612:nobodyさん
09/03/24 20:14:05
>>606
併せて、php.iniで、extension_dirがC:¥PHP¥extになってるか確認してみて。

613:nobodyさん
09/03/24 20:15:53
すまんinclude_path関係ないね

614:nobodyさん
09/03/24 20:36:16
>>606
phpinfo()を実行してみて、php.iniをどこから読み込んでいるのかも確認してみて。

以前、WINDOWSディレクトリと、phpの展開先の両方に異なる設定のphp.iniを置いていて、はまったことがあるので。

615:nobodyさん
09/03/24 20:37:10
始めの頃ありがちw

616:nobodyさん
09/03/24 21:07:22 /zsLtnA9
クラスの数が多くなってきたので(__autoloadで読み込み)
複数クラスを一つのファイルにまとめたら速くなるのではと
思うのですが、それって実際どの程度の効果があるでしょうか?
まとめなくても、元来OSがファイルキャッシュするので、
あんまり変わらない気もします

617:nobodyさん
09/03/24 21:09:24
計れば良いのでは?

618:nobodyさん
09/03/24 21:18:30
>複数クラスを一つのファイルにまとめたら速くなるのではと
再利用とか無視して一人で使うんだろうから別にいいとは思うけど
それでも基本どおり1クラス1ファイルにしときな

619:606
09/03/25 00:12:15 4yhBz/QX
みなさんたくさんのレスありがとうございます

>>612
そうなってました
>>614
C:\WINDOWS  でした。正しいですよね…

>>608さんの書いてる原因かなぁ
もうwindowsで作るの自体やめよっかな

620:nobodyさん
09/03/25 00:32:37
>616
ボトルネックがわかっていない状態でチューニングをしてはいけない。
まずは測定。

ファイル数云々というより、__autoload()の呼び出し回数が減ることによる高速化は一応期待できるかな。
マジックメソッドの類は総じて重い。
まあ、DBやファイルへのアクセスがあるならそっちがボトルネックになってるとは思うけど。

621:nobodyさん
09/03/25 01:59:46
>>616
環境いじれるなら、APCとか使うのが良いんじゃないかなぁと思う。
ソースコードは扱いやすい単にしておいた方が、いろいろ良いし。

自分ははクラスはモジュールぐらいの単位の方が扱いやすいんで、
1クラス1ファイルにはしてないけど。

622:nobodyさん
09/03/25 11:16:26 yQlt60AA
PDOで永続接続を使っている場合、prepareを使うと2回目以降の実行が効率化するんでしょうか
それとも実行のたびに毎回prepareステートメントを発行するから意味無いんでしょうか

623:nobodyさん
09/03/25 11:18:39
prepareって接続してんの?

624:nobodyさん
09/03/25 15:06:05 Ijn9qBql
htmlspecialchars($var, ENT_QUOTES, 'utf-8')
でhtmlエスケープしていたのですが、
アンパサンドがエスケープされるので、
数値実体参照が「&#~;」という文字列として表示される
ということが分かりました。
数値実体参照の場合は生で表示するにはどうしたらいいですか?

625:nobodyさん
09/03/25 15:15:24
出力するときに&に置換すればいいじゃん

626:nobodyさん
09/03/25 16:45:47
フォームの処理でmethodがpostの場合、
一度submitで送信した後、更新ボタンを押すと
再度送信するようなアラートが出ますが、
これを出さないようにする方法はないでしょうか?

header関数で送信元のページにリダイレクトして戻す方法以外で教えて下さい。

627:626
09/03/25 16:47:05 7ip+uIiL
すみません、ID隠してました・・・

628:nobodyさん
09/03/25 17:24:35
>>626
ブラウザの仕様なのでPHPでどうこうできる問題じゃない

629:nobodyさん
09/03/25 19:52:08 Ut4OfJaE
俺のマシンはwinXPの32ビットで4Gのメモリを積んでます。
システムのプロパティで見ると3.25GB認識してるのですが
PHPでどんなに重い処理をしてもタスクマネージャで見ると700MB位しか使っていません。
PHPのメモリリミットは-1の無制限にしてるのに何で?
もっとメモリ使ってくれたら速くなりそうなんだが。

スペックはアパッチ、PHP5

630:nobodyさん
09/03/25 20:13:46
>>629
んなこたーない

631:nobodyさん
09/03/25 20:38:00
メモリ使ったら速くなる?

632:nobodyさん
09/03/25 20:47:09
>>626
「リロード対策」というキーワードでググると
情報が出てくる。

だが、自分には複雑すぎて理解できなかったが。

633:nobodyさん
09/03/25 21:30:14 POBIuYee
問題の切り分けレベルですいませんが
URLリンク(kokusan.syokuryo.jp)
このblogパーツですが中身のjs↓
URLリンク(kokusan.syokuryo.jp)
を機能丸ごと再現してみたいのですが(用途は勉強、兼遊びで)

再現するのに
■サーバサイドの技術は何が必要か
■ローカル側は.jsだからとりあえずはコピペで十分?
という所で(入口ですが)詰まってます。
どなたかご助言plz


634:nobodyさん
09/03/25 21:32:29
まずJavaScriptの基礎から学ぶといいかと

635:nobodyさん
09/03/25 21:50:38
>>629
画像データをメモリ上に読み込んだりしない限り
そんな使うことはないだろ
重い処理なんていってもPHPの場合たかがしれてる

636:nobodyさん
09/03/25 23:08:42
>>625
そうですね
そもそも&までエスケープする仕様はやりすぎのような・・
2chでも&はエスケープしてないし。googleも。

637:nobodyさん
09/03/25 23:23:27
>>636
xmlデータにおいては、&は実体参照必須だけどね。

638:nobodyさん
09/03/26 00:04:21
>636
気に食わないなら文句言ってないで自分で実装すりゃいいじゃん。
単純に置換するだけだから、str_replace一発でできるぞ。

俺はやりすぎとは思わないな。入力文字列をそのまま画面に出力したいなら、&の置換もしたほうがいい。

639:nobodyさん
09/03/26 00:25:15 l1PHOXdz
数値を0.5刻みでフォーマットしたいのですが、
何かスマートな方法はありますでしょうか?

(例)

1.0以上1.5未満 => 1.0
1.5以上2.0未満 => 1.5
2.0以上2.5未満 => 2.0

よろしくお願いします。

640:nobodyさん
09/03/26 00:35:55
>>639
2倍にして切り捨てて半分にする

641:nobodyさん
09/03/26 00:39:42
>>639
四捨五入じゃなくて?

642:nobodyさん
09/03/26 00:39:59
>>638
安全にこしたことはないですが、今回は実体参照を頃されてしまうのが問題なので・・
それにしても、エンコードを意識せず、単に置換したらいいだけなんですか?
だとしたら、htmlspecialcharsのエンコード指定は何に使われているんだろう

643:nobodyさん
09/03/26 00:55:11
>>639
round

644:nobodyさん
09/03/26 01:05:32 fG8U3yBv
MySQLのSQL文のWHEREを
$where_ary = array("id"=>"1","name"=>"あああ");
foreach($where_ary as $key=>$value){
$array[] = $key."='".$value."'";
}
$where = join("&",$array);

と言うように連想配列を使って生成しています。
上記のようにすると、変数に値が入っている場合は大丈夫なのですが、
MySQLの関数(NOWやDATE_FORMATなど)を使いたい時、使えません。
かといって値の部分に関数を記述しても文字列となります。

もっと効率よく生成するには、どのようにすれば良いのでしょうか?

645:nobodyさん
09/03/26 01:07:24
>>642
指定はできるけど、何も使われていない、って情報が
どっかのブログに書いてあった

646:nobodyさん
09/03/26 01:23:03
>>644
Zend_Dbの実装はこんな感じ
URLリンク(framework.zend.com)

647:nobodyさん
09/03/26 01:52:56
URLリンク(framework.zend.com)

648:644
09/03/26 02:06:29
>>646-647
これは非常に参考になります。
実際に自分もSQL文の生成にはクラスを使っているので
Zend Dbを参考に、独自の仕様にしてみます。

649:nobodyさん
09/03/26 11:39:12 p1YkL4wy
WindowsにCLIでインストールされたPHPでphp -a ではなく、
ある程度インラインで入力してからまとめて実行したいのですが、
どうすればできますか?


650:nobodyさん
09/03/26 13:22:22
>>649
C:\>php

651:nobodyさん
09/03/26 18:55:54 JIscrcVE
phpで、「何時間毎に」とか、「何月何日に」とかいう指定で、プログラムを走らせたりメールおくったりするにはどうすればいいでしょうか?

652:nobodyさん
09/03/26 19:01:47
>>651
cron

653:nobodyさん
09/03/26 19:02:58
>>651
それか、そのファイルに対する最終アクセス時刻を記録しておいて、
「前回のアクセスは3日前だな、、、
だったらよし、今回は3日分の処理を一気にやればいいんだな」
とかってプログラムで判断させて、アクセスするたびに
その処理を実行するとか。

もちろん、この場合、アクセスがなければ処理も実行されない。

654:nobodyさん
09/03/26 19:03:41
Windowsだったら、タスク スケジューラ
それがUNIXのcronと同じ。

655:nobodyさん
09/03/26 19:08:12
>>651
こういうこと?
URLリンク(phpspot.org)

656:nobodyさん
09/03/26 19:31:31
クソサイトの宣伝すんなや
web cron

657:nobodyさん
09/03/26 20:06:05
すぐ吠えるDQNって・・・どこまで底辺なんだよ

658:nobodyさん
09/03/26 20:59:43 JIscrcVE
ありがとう、普通にcronすればよかった、トンクス

659:nobodyさん
09/03/26 21:05:33
>>649
STDINを使えという話ではなくて?
URLリンク(jp.php.net)

660:nobodyさん
09/03/26 21:23:14 ih4lRG32
PHPのソースを読んでコメントを抽出する正規表現を書きたいのですが
どうにもうまくヒットさせることができません
/**  */  */
の時に長い方がマッチされてしまいます
どう書けばいいですか?

661:nobodyさん
09/03/26 21:32:53
"!/\*(.*?)\*/!s"

662:nobodyさん
09/03/26 21:48:28
>>661
できました!ありがとうございました。
*?で最短にマッチさせられるんですね

663:nobodyさん
09/03/26 23:16:05 46RAjvuH
fgetcsv関数って基本的にwhileとセットで使うの?

664:nobodyさん
09/03/26 23:23:56
retunr値が配列なだけだろ

665:nobodyさん
09/03/27 07:08:11 viybN2w6
symfonyにあるような、
ディレクトリを再帰的にさらってクラスをリストアップする機能が欲しいのですが
どうしたらいいですか?
PEARのPHP Parserを使ってみたのですが
エラーが出まくって使い物になりませんでした

666:nobodyさん
09/03/27 08:05:52
>>665
既に検討したとは思うが、クラス名を取得する程度なら、Tokenizerで処理しても、
大した手間でもなんじゃないの。

URLリンク(jp.php.net)

667:nobodyさん
09/03/27 09:19:56 DtOzsPN+
rename関数でフィアルを移動するプログラムを書いています
移動先に同名のファイルがある場合に上書きさせたいのですが
一度unlinkしてからrenameしないと駄目なのでしょうか?

668:nobodyさん
09/03/27 09:23:54
うん

669:nobodyさん
09/03/27 15:04:57
>>666
こんな便利そうなものがあったとは!
まさに欲しかったものです
ありがとうございました

670:nobodyさん
09/03/27 15:35:49 LbT/oMC/
ただ今MVCにてアプリケーションを作成していて
モデル部分にデータベース関係の処理(selectやdelete)を全てまとめてますが
フォームの項目チェックなどのバリデーション関係は
モデルではなくコントローラーに記述するべきですかね?

671:nobodyさん
09/03/28 00:29:13
>670
MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。

672:nobodyさん
09/03/28 00:34:00
バリデーションがC??

673:nobodyさん
09/03/28 02:42:46
画面やテーブルごとにチェックする項目が異なるのに
バリデーションがCはありえない

674:nobodyさん
09/03/28 06:25:24 xuBHT5om
newしたオブジェクトを変数に代入せずにメソッドを呼びたいのですが
そういう書き方ありますか?
{new Hoge()}->method()
みたいなイメージです

675:nobodyさん
09/03/28 06:46:27
>>674
URLリンク(74street.ddo.jp)
これかな?

ちなみに、インスタンス化せずメソッドを使う場合、宣言時にメソッドに「static」を付け、「クラス名::メソッド名」で呼び出す。。

class SampleClass {
public static function func($a,$b){
return $a + $b;
}
}
$ans = SampleClass::func(1,2);

676:nobodyさん
09/03/28 08:45:03
>>674
それは不可能

677:nobodyさん
09/03/28 08:49:24
>>676
お前、馬鹿だろ
前のレスで完結してるのにわざわざくだらん横槍を入れる必要はない

678:nobodyさん
09/03/28 08:56:18
静的メソッドしか呼び出せないじゃん

679:nobodyさん
09/03/28 08:58:31
>>676じゃないが、>>675 は別モンだと思うけどな。

>>674は何でそんなことしたいんかナゾだけど。目的も書くべきだろ。
ただの興味ということなら、それはそれで良いけど。

680:nobodyさん
09/03/28 11:44:19
というか何の意味があるんだろう

681:nobodyさん
09/03/28 12:52:45 0oeFWAvW
マニュアルを見てもいまいちわからないのですが
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
echo $b;
期待する結果は48ですが実際は44になります。($bには2行目の結果が入ったままってことでしょう)
2行目を$b = &$a * 2;のようにすると24になります。(*2は無視?)
期待する結果を表示するにはどのように記述すればいいのでしょうか。
PHP5.2.6

682:nobodyさん
09/03/28 14:13:07
>>681
言いたい事は理解できた
$b は常に $aに入れた値を2倍にする変数にしたいという事だな

2行目の $b = $a * 2 は $bに$aの値を2倍した値を入れるという命令だ
だから2行目では$bで$a(2)*2で4が入って3行目で4が出力、
4行目で$aに4を代入しているが5行目では$bは変化無しの4が表示されるから44となる

そして $b =& $a * 2 は変数の参照という事になって $b に入れた値は $a にも反映されるという事だ
2行目で変数&bは$aを参照しているとしているから3行目で2が表示されて
4行目で$aに4を入れているが$aと$bは参照の関係にあるから$bは4となり24となる

変数でそんな事が出来るか記憶を辿ってみたが…出てこない
件を解決する簡単な方法は関数を作ることだと思うんだが?

683:nobodyさん
09/03/28 14:21:32
>>681
掛け算の結果にまで参照変数を反映させるのは無理。もう一回掛け算するしかない
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
$b = $a * 2;
echo $b;

684:nobodyさん
09/03/28 14:30:41 jCCBzDpK
pChartを使ってレーダーチャートを描いています。
デフォルトでは縦軸にラベル(目盛?10、20、30...など)が表示されるのですが、
これを表示しないようにするにはどうすればよいのでしょうか?
公式のドキュメントを読んだのですが、わかりませんでした。

どなたか分かる方がいましたら、よろしくお願いします。

685:681
09/03/28 15:12:28 0oeFWAvW
>>682-683
ありがとうございます。
変数のみでは求めることは無理なんですね。関数で処理することにします。

686:nobodyさん
09/03/28 15:25:27
多分681がイメージしているような、「$aを2倍して返す処理」自体を$bに変数として格納するような仕組みはクロージャという。
関数をその場で組み立てるイメージだな。普通に関数を使う場合と違い、「2」の部分を$bの生成時に動的に組み込める。
JavaScriptやRubyでは可能、JavaやPHPでは不可能。PHPでは次のバージョンには盛り込まれる見込み。
これもまあ、関数を作っているわけだけど。
クラスを使ったりグローバル変数を使ったりしていいなら、今のPHPでも同じ処理は一応可能。

687:nobodyさん
09/03/28 16:48:33 y1nm6eda
POSTされた各フォーム毎の項目チェックをする時に、
$_POSTを直接チェックするのは何か問題がありますか?

if(!isset($_POST["name"])){
echo "未記入です";
}

それか全て一旦POSTを変数に代入してチェックした方がいいですかね?

688:nobodyさん
09/03/28 17:15:52
まったく問題ない

689:687
09/03/28 17:25:52
>>688
返信ありがとうございます。
なんとなく自信がなく聞いてみたんですが安心しました。
ありがとうございました。

690:nobodyさん
09/03/28 19:01:42
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【ショタ】3次専ショタスレ 12【女装・美少年】 [Download]

このスレに変態がいる!!

691:nobodyさん
09/03/28 19:31:18
phpの関数名でググった時
公式のドキュメントじゃなくて
phpspotのアフィドキュメントが上位に来るのがむかつくんだけど
どうしたらいい?
googleで除外urlを指定できたらいいんだけど

692:nobodyさん
09/03/28 19:36:20
>>691
>>1

693:nobodyさん
09/03/28 22:31:41
>>690
呼んだ?

694:nobodyさん
09/03/28 22:48:03
URLリンク(journal.mycom.co.jp)

695:nobodyさん
09/03/28 22:52:21
GOTO文wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

696:nobodyさん
09/03/28 23:16:06
GOTOを否定する奴は例外も使うなよ

697:nobodyさん
09/03/28 23:27:52
gotoよりはfinallyが欲しかったねぇ。
なんか都合があるんか知らんが。

698:nobodyさん
09/03/29 05:04:23
gotoってどういうときにつかうの?

699:nobodyさん
09/03/29 06:25:15
帰ってきてほしくない時

700:nobodyさん
09/03/29 09:35:20
人生をやり直したいとき

701:nobodyさん
09/03/29 13:21:29 EDw1f4T+
define("TEST",realpath("."));

という定数があったとして、TESTの中身が「/home/test/public_html」だとします。
通常は、定数指定して
include_once(TEST.'/test.php');

としてディレクトリ指定代わりに出来ますが、
定数の中身で表示する事って出来ませんでしょうか?上の例で言うと
include_once('/home/test/public_html」'.'/test.php');
と言うように書き出せればと思っています。

702:nobodyさん
09/03/29 13:28:04
表示ってどこに?ソースコード中に?

703:701
09/03/29 13:29:17
>>702
fopenでファイル作成する時に、その出力側のファイル上に

include_once('/home/test/public_html'.'/test.php');

という形で記述されて欲しいのです。

704:nobodyさん
09/03/29 13:31:15
意味が分からない
fopenでtest.phpを作成するってこと?

705:nobodyさん
09/03/29 19:34:50
fopenはファイル開くだけだろ。PHPとしては動かないよ
PHPスクリプトをファイルとして開く理由がわからんが

706:nobodyさん
09/03/29 20:07:08 g6t/L+Oe
URLリンク(atelier-ps3.jp)

このサイトいくらぐらい掛かってると思いますか?


707:nobodyさん
09/03/29 20:07:18 A+4tAAtu
配列で存在しないキーにアクセスするとnoticeが出るはずですが、
以下のようにすると出ません。
これは何故ですか?

error_reporting(E_ALL | E_STRICT);

class Hoge {
protected $_value = array();

public function & getEntity($key){
return $_value[$key];
}
}

$hoge = new Hoge();
var_dump($hoge->getEntity('no_key'));

708:nobodyさん
09/03/29 20:08:51
return $this->_value[$key];
でした
結果は同じですが

709:nobodyさん
09/03/29 20:18:24
参照だから。

710:nobodyさん
09/03/29 20:20:00
リファレンス返してるからだろ

711:nobodyさん
09/03/29 20:23:38
リファレンスだと何故noticeが出ないのですか?

712:nobodyさん
09/03/29 20:34:22
リファレンスって何か知らんで使ってんの?

713:nobodyさん
09/03/29 21:07:35
>>711
参照を張るとzvalが増えて変数を定義したのと同じことになるからな。
計算機の基礎だと思うが。

714:nobodyさん
09/03/29 22:45:02
>>696
強盗みたいだから否定してるのであって例外は問題ない、というのが今の反GOTO派の主流

715:nobodyさん
09/03/29 23:05:06 lmZMeLkn
【OS名】CentOS 5.1
【PHPのバージョン】php5.16
【連携ソフトウェア】mysql
【質問内容】

print'<tr>';
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
}

MySQL から 特定のフィールドを取得し,HTML のテーブルに5列ずつ表示しようとしております。
5列毎にprint'</tr>';を挿入して
テーブルの行数をかえたいのですが,どのようにすればよろしいでしょうか?

【求める結果】MySQL テーブルのの行数が8行の場合
<tr>
<td>NAME1</td>
<td>NAME2</td>
<td>NAME3</td>
<td>NAME4</td>
<td>NAME5</td>
</tr><td>
<td>NAME6</td>
<td>NAME7</td>
<td>NAME8</td>
</tr>



お手数ですがよろしくお願いします。

716:nobodyさん
09/03/29 23:19:48
pager?

717:nobodyさん
09/03/29 23:21:58
>>713
なるほど、参照を張ると変数定義と同じになるんですね。

718:nobodyさん
09/03/29 23:22:53
雑だけど。

$i = 1;
while ($row = mysql_fetch_object($res)){

print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
 ++$i;
}
}

719:nobodyさん
09/03/29 23:28:38
>715
HTMLマークアップが不正な件。
8個の場合、2行目3列目までで終わるが、余った2セルはどう埋めるんだ?

>718
<tr>がない。

720:715
09/03/29 23:39:03 lmZMeLkn
ご回答ありがとうございます。

>>718 を参考にして,
$i = 1;
while ($row  = mysql_fetch_object($res )){
if($i == 1){
print'<tr>';
}
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
としてみました。
>>719 の件については,とりあえず暫定的に MySQL 内の行数を5の倍数にしておきます。


皆様ありがとうございました。

721:nobodyさん
09/03/30 05:37:45 Sq1DK82P
DBなどすべてUTF-8で構築しております。
そのうえで、xmlWriter()をつかって「EUC-JP」で
XMLを書き出したいのですがどうしたらよいのでしょうか?
単にstartDocumentでEUC-JPを指定するだけでエンコードを変更できるのでしょうか?
Firefoxでは表示され、safariだとエラーになってしまいます。

$writer = new xmlWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'EUC-JP');
$writer->startElement('root');
(略)
$writer->endElement();
$writer->endDocument();
return simplexml_load_string($writer->outputMemory(TRUE));

ちなみに各Directiveの値もメモしておきます。
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding UTF-8
mbstring.script_encoding no value


※もうひとつのスレッドでは答えがわからずじまいで、
 どうしたらよいかヒントだけでもつかめたらと思います。
 どうぞお願いいたします。

722:nobodyさん
09/03/30 08:22:50
マルチ乙

723:nobodyさん
09/03/30 12:12:19 ObvykTsh
初心者ですが質問させて下さい。
URLリンク(www.gen-x-design.com)
このサイトのthumbnail.inc.phpを使って画像をリサイズしてサムネイルを生成したのですが
いまいち仕組みがわからずにいます。
リサイズされた画像はどこかに保存されているんでしょうか?



724:nobodyさん
09/03/30 12:16:26
スクリプトの仕組み解らなくてもOSのファイル検索くらいは使えるだろ

725:nobodyさん
09/03/30 12:28:05 ObvykTsh
OSのファイル検索?
実際にサイトにアップして表示させてみました。
そしたらリサイズされた画像が表示されたんですが
サイトのどこをみても画像が増えた形跡がありません。
リサイズした画像を別に保存するわけではないのですか?

726:nobodyさん
09/03/30 12:41:43
いやだからファイル探したいならファイル検索すればいいじゃん

727:nobodyさん
09/03/30 12:49:44 ObvykTsh
検索したくても、どんな形式でどんなファイル名で保存されてるかわからないので
画像のアドレスをみても
show_image.php?filename=sample.jpg&width=250&height=250
と書いてあるだけなんです


728:nobodyさん
09/03/30 13:07:26
別に保存されてないんじゃねーの?

729:nobodyさん
09/03/30 13:09:40
これしてねーんだろ
$thumb->save('path/to/file.jpg',80);

730:nobodyさん
09/03/30 13:13:48 ObvykTsh
あ、それしてないですね
それをしないとただ大きい画像を縮小してるだけで意味ないんでしょうか?


731:nobodyさん
09/03/30 13:26:05
サムネで表示しただけで保存されるほうがうっとうしいわ

732:nobodyさん
09/03/30 13:53:38
っということは、大きい画像を元に
サイズも容量も小さくして表示ができるってことでいいのでしょうか。
サムネイル画像の保存をせずに

733:nobodyさん
09/03/30 14:28:36 Nai97eUH
頭がこんがらがってしまったので質問させて下さい。
データベースを用いてアプリケーションを作る際
例えば該当するIDを選んでupdate、deleteする時に、
該当するIDがある時は正しく削除され、削除されました。
とメッセージを返すんですが何らかの形で該当しないIDが
投げ込まれた時は一般的にはどのような処理をされていますか?
まず該当するIDがあるかselectで調べて、ある場合はupdateもしくは
deleteで処理みたいな形ですかね?
アドバイスよろしくお願いします。

734:nobodyさん
09/03/30 14:50:52
それでいいよ

735:nobodyさん
09/03/30 15:01:56
>>733
URLリンク(jp.php.net)
とか類似関数で。

736:733
09/03/30 15:12:04
>>734-735
返信ありがとうございます。
これまでなんとなくしか理解できてなかったのですが
今スッキリしました。
本当にありがとうございました。

737:nobodyさん
09/03/30 18:45:52 Gjy/ZAJ6
【OS名】Ubuntu 8.10
【PHPのバージョン】5.2.6-2ubuntu4.1
【連携ソフトウェア】Apache/2.2.9
【質問内容】
PHPをさわり初めて一日目の初心者です。
header ( "HTTP/1.0 404 Not Found" , true , 404 );で、.htaccessで指定した404エラーページを
表示させたいのですが、ブランクページになって表示されません。
確かに404エラーページはファイル自体が存在していない場合のみ表示されますので、Location:で
存在しないファイルにリダイレクトさせて見たところ、見事404エラーページが表示されました。
しかし、この方法はアドレスが変更されてしまうので、できればそのPHPのアドレスで、404エラー
を表示させたいのですが、何か方法はございませんでしょうか。
よろしくお願いします。

738:nobodyさん
09/03/30 23:26:09
>>737
readfileでエラーページの内容をそのまま流しちゃダメなの?
URLリンク(jp.php.net)

739:nobodyさん
09/03/31 06:15:24
クラスについて質問です。
URLリンク(www.m-fr.net)
このサイトで、

>で、こうします。

>obj = new 三角クラス;
>適当な変数 = obj->get_1辺の長さ(); // データの取得
>obj->set_1辺の長さ(適当な値); // データの設定

とあるのですが、下の二行は順序が逆の方がよいのでは?と思いました。
setしてからそのsetした結果得られる値をgetする、みたいに。
その方がしっくりくるというか・・
もしかしたら、何か理由(もしくは自分の勘違い)があって、
getをまず書いておいて、そのsetする一行を書く、という形式にしてるのか
よくわからないので、教えていただけないでしょうか
よろしくお願いします。

740:nobodyさん
09/03/31 08:44:30
2行目で得た値を3行目で使っているわけではないと思うぞ?
getとsetの別々の事例かと
あとスレタイ

741:nobodyさん
09/03/31 10:26:43 MdY2FCLh
WindowsXP上で開発を行っているのですが、
Windowsの絶対パスでrequireで読み込むとエラーになります。

require_once("C:\htdocs\test.php");

failed to open stream: Invalid argument

どうしたら読み込めるようになるのでしょうか?

742:nobodyさん
09/03/31 10:35:59
echo "C:\htdocs\test.php"; やってみそ

743:nobodyさん
09/03/31 10:53:51
>>683
今コード用意しますのでちょっと待っててくださいね

744:nobodyさん
09/03/31 11:14:25
アンカ間違えましたね^^;
>>681さんおすきなほうどうぞ

その1
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";}

$a = 2;
$b = 2;
cale($a,$b);
$a = 4;
cale($a,$b);



その2
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";
}

// $aと$bはそれぞれ別の値を持てる
$a = 2;

$b = 2;
$cale($a,$b);

// $aと$bは常に同じ値になる
$b = &$a;
$a = 100;
cale($a,$b);
$a = 5;
cale($a,$b);

745:nobodyさん
09/03/31 11:20:52
>>737

rewrite

746:nobodyさん
09/03/31 12:20:45
>>737
あなたのやろうとしてることはおすすめできない

747:nobodyさん
09/03/31 13:58:39
>>737
アパッチ「俺の仕事はもう終わってんだからバックパスすんな」

748:nobodyさん
09/03/31 15:08:08 H7khy467
+食べ物
++りんご
++バナナ
++ぶどう


↑の4行を↓のようにhtmlタグとして出力したいのですが
wikiみたいなことがやりたいのですがどなたかヒント頂けないでしょうか?

<ul>
<li>食べ物</li>
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</ul>

749:nobodyさん
09/03/31 15:12:34
wikiのソース見ればいいのでは?

750:nobodyさん
09/03/31 15:19:27
>>749
HTMLソース見てもしょうがないだろw

751:nobodyさん
09/03/31 15:27:10
>>749
そんなんで片付くならこのスレが82代まで行かないでしょw
答えてやればいいじゃんwww

752:nobodyさん
09/03/31 15:27:12 qal8dqXu
>>738,745
ありがとうございます。
>>746-747
本当はファイルが存在しているのに無理矢理サーバーにファイルが存在していないことにして、エラーページを表示させるところが
でしょうか。それとも、「header ( "HTTP/1.0 404 Not Found" , true , 404 );」がおすすめできないのでしょうか。

もし、そうであれば、「header("HTTP/1.0 301 Moved Permanently") ;header("Location: URLリンク(www.example.com)") ;」
などのリダイレクトであれば大丈夫ですか。

753:nobodyさん
09/03/31 15:27:13 WkuOnscP
【OS名】TurboLinux
【PHPのバージョン】4.3.11
【連携ソフトウェア】Apache2
【質問内容】
auto_prepend_fileで指定したファイルが動いてくれません。

.htaccessで、「php_value auto_prepend_file "ap.php"」と記述しました。
ap.phpの中身は「<? echo("test"); ?>」です。

これでURLリンク(hostname)を開くと、
画面上部に「test」と表示されることを期待しているのですが、
TurboLinux + PHP4.3.11のサーバーでは実際は何も表示されませんでした。

もうひとつUbuntu + PHP5.2.4のサーバーがあるのですが、
そちらに同様のコードを設置したところ、意図したとおりに動きました。

何か設定の問題だとは思うのですが、何が問題なのか分からずに困っています。
ひとまず以下のことを試しました。

・phpinfoを確認 ⇒ auto_prepend_fileのLocal Valueは「ap.php」になっている
・auto_prepend_fileの設定をわざと"ap2.php"にした ⇒ ファイルが読み込めないエラー
・ap.phpの中身をわざと文法エラーにした ⇒ 何のエラーも出ない(display_errorsはon)
・ap.php、index.phpの両方でWarningが出るようにした ⇒ index.phpのWarningのみが表示される
・ap.phpの一行目(<?~?>の外側)に「aaaaa」を追加 ⇒ 何も表示されない

どうもauto_prepend_fileでap.phpを読み込んではいるものの、
ap.phpのコードが実行されていないようです。
この現象について分かる人がいらっしゃいましたらご教示下さい。

754:nobodyさん
09/03/31 15:50:33
>>753
>ap.phpの中身は「<? echo("test"); ?>」です。

<?使えるなら<?=使えよ
ていうか<?phpって書く方を推奨

755:nobodyさん
09/03/31 15:53:09
>>753
よくわかんないけど全てのページのヘッダに挿入するならmod_layout
URLリンク(d.hatena.ne.jp)

756:nobodyさん
09/03/31 19:15:21
>>748
質問に対する答じゃないけど、HTMLは
<ul>
<li>食べ物
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</li>
</ul>
こう書いた方がいいと思う。

757:nobodyさん
09/03/31 20:09:26
>>748
URLリンク(d.hatena.ne.jp)

758:nobodyさん
09/03/31 22:31:20
>674
今日めっけた
URLリンク(d.hatena.ne.jp)

function ref($obj){ return $obj; }
ref(new Hoge)->doSomething();

良し悪しはともかく、発想は面白い。

759:nobodyさん
09/03/31 22:32:52
そこまでして1行にして何のいいことがあるんだろう

760:nobodyさん
09/03/31 23:09:23
余計な関数が増えることには何の抵抗もないのかw

761:nobodyさん
09/03/31 23:32:57
一時変数が(複数の場所で)増える事と関数が増える事のトレードオフなら、俺なら関数を増やす。
このためだけにgetInstance()とかfactory()とか定義したら、関数増やすよりタチ悪いしな。
ただ、一般的な書き方じゃないので、ref()の定義を探さないと読めない=コードの可読性が落ちるのが難点。
JavaScript界の$()みたいに、一般的なハックになったらアリかな。

762:nobodyさん
09/03/31 23:35:38
他言語でできるのにPHPでできないのがむかつくんだよな

763:nobodyさん
09/03/31 23:38:29
オブジェクトの基底クラスにstaticなnewが実装できたら
Hoge::new()->doSomething();
ってできるのにな

764:nobodyさん
09/04/01 00:05:10
singletonでいいじゃん

765:nobodyさん
09/04/01 01:36:40
一行にしたいって要求に対して、singleton提案するやつw

766:nobodyさん
09/04/01 01:37:54
>>761
いっしょに仕事したくないタイプだわ。なんだよrefって

767:nobodyさん
09/04/01 02:05:39
>>765
一行になるじゃん

768:nobodyさん
09/04/01 02:20:35
メソッドチェーンがやりたいだけだろ

769:nobodyさん
09/04/01 02:32:15
誰が?

770:nobodyさん
09/04/01 02:51:42
俺!

771:nobodyさん
09/04/01 03:16:29
singletonはウンコすぎ。singleton依存症は治る病気だから通院したほうがいいぞ

1行で書きたいって理由だけでstaticなクラスメソッドを増やすのは流石にナシだろ
だいたい1つや2つならともかく、そういう書き方がしたくなるようなJavaっぽい書き方をしてたら抽象データ型なんて死ぬほどできるわけで
そういうクラス全部にstaticメソッド定義すんのかって話になる。継承も使えないし
コンストラクタが引数を取るような場合さらに面倒くせえしな

まあ、そもそもJavaっぽい書き方なんかするなよ、って言うのが多分正解だけどな
$tmp = new Hoge(); $tmp->fuga();でいいだろ
使いもしない一時変数が増えるのがキモいって気持ちは分かるが

772:nobodyさん
09/04/01 07:15:56 zGetu19r
ファイルをダウンロードできるWebアプリがあって、IE8で保存するフォルダをゆっくり選択してると
サーバ側のPHP(5.2.6/Windows)がタイムアウトしちゃうんですが、そういうもんなんでしょうか。

タイムアウト伸ばすしかないのかなぁ。
ファイルが壊れるだけで、一見したところ気がつかないのが、またいやらしい。

773:nobodyさん
09/04/01 07:21:55
てか、singletonは全く別次元の話だろ

774:nobodyさん
09/04/01 07:26:35
>>771
ひとつひとつのクラスにstaticメソッドを実装するってことではなく
rubyみたいにすべてのオブジェクトの先祖になるクラスにstaticを実装するって意味。
今でもrunkit使えば可能なのか、どうか知れないが、
標準で出来たらいいなぁ

775:nobodyさん
09/04/01 08:25:46 wwrEQ3GF
WindowsXPで開発しているのですが、
echo realpath(".");

とすると、C:\Program Files\Apache Group\Apache2\htdocs

のように\が付きます。これを/に置換すれば良いだけでしょうが、
最初から\ではなく/にして、ディレクトリ名を取得する方法はないでしょうか?

776:nobodyさん
09/04/01 08:34:02
>>771
じゃsingletonじゃなくて普通にインスタンス返すメソッドでいいじゃん

777:nobodyさん
09/04/01 08:43:29
レンたるサーバーなのでMysqlのmax_connectionを増やせまえん。
たまにMysqlへの接続数が多すぎてエラーになります。
そこで、
if(){
通常通りMysqlへ接続}
{接続エラー時の対処}

こんな感じにしたいと思ってるんですが、いい関数ありますか?

778:nobodyさん
09/04/01 09:25:38
>>771でいいだろ。気持ち悪いコードやメソッド増やしたいやつ多すぎ

779:nobodyさん
09/04/01 09:28:10
>>777
die

780:nobodyさん
09/04/01 09:29:50
そもそも、newしてメソッドを一つだけ実行ってのは設計がダメだな。
staticで十分か、コンストラクタに仕事させすぎ。

781:nobodyさん
09/04/01 09:54:46
>>775
Windowsをunixベースにする

782:nobodyさん
09/04/01 11:02:36
>>775
nai

783:nobodyさん
09/04/01 11:04:49
>>777
こっちのほうおすすめ

function errorMysql() {
エラー処理
exit;
}

if (!接続) errorMysql


784:nobodyさん
09/04/01 11:49:45
例外使えよ

785:nobodyさん
09/04/01 17:33:12
最近書き込み減ったに
貴様らなにしてんのかね

786:nobodyさん
09/04/01 18:09:20
もう一つの某巨大掲示板に移動したんじゃね?

787:nobodyさん
09/04/01 18:21:05
>>786
それってどこよ?

788:nobodyさん
09/04/01 18:36:52
>>785
PHPの仕事を他の人に任せてコーディングの仕事するようになった

789:nobodyさん
09/04/01 21:00:24
>>787
おしえてグー

790:nobodyさん
09/04/01 23:06:31
>774
絶対言われると思った。俺もそれは考えたが、5.3.0より前のPHPでは無理。
親クラスで定義された静的メソッドで、子クラスのインスタンスは生成できない。つまり

class Parent{
static function getInstance(){
 //do something
}
}
class Child extends Parent{}

とあった場合、Parent::getInstance()の実装がどんなだろうと、Child::getInstance()がChildのインスタンスを返すのは不可能。
Childというクラス名すら取得できない。

>780
{ new UrlString("スレリンク(php板)") }->domain();

コンストラクタによる依存性注入をしてる場合も、newしてすぐメソッドを呼ぶだけでじゅうぶんな事がある。
引数なしのコンストラクタならばたいていの場合不要ってのは同意。

791:nobodyさん
09/04/02 09:51:30 ij3728yl
URLリンク(pear.php.net)

これって日本語は対応してないの?

792:nobodyさん
09/04/02 10:31:00
ソース見りゃ分かんべ

793:nobodyさん
09/04/02 10:35:42 ij3728yl
>>792
いやいや、、、
まだそこまでレベルいってないですよ
だからあなたが代わりに見て判断してください

794:nobodyさん
09/04/02 10:44:44
じゃレベル上げろ

795:nobodyさん
09/04/02 10:56:23
長い文と難しい単語(音節のたくさんある)の割合で計算してるみたいだから、
原理的には日本語でも計算は可能だろうけど、日本語ではMecabとかないと大変だし、
多分計算式に定義されてる係数は日本語の場合を考慮していないので、
信頼出来る結果のためには自分で文献にあたるとか実地調査して決定する必要があるべ。


796:nobodyさん
09/04/02 11:12:51 CfxT7le3
【OS名】windows xp home edition
【PHPのバージョン】php5ぐらい
【連携ソフトウェア】mysql
【質問内容】

フォームのセレクト項目で悩んでいます。
form.phpを表示させるとき、セレクト項目を
mysqlから取り出して表示させているのですが
(idとその名前)
セレクト項目が4つもあるので、何か一気に取り出す方法が
あったりするのですか?それとも、一個一個4つのセレクト用に
select genre_id,genre_name from genre;
(genreはジャンル)
というふうにするしかないですか?


797:nobodyさん
09/04/02 11:30:18 4VqTVZ/0
mysqlの勉強をしてます

以下のようなデータをデータベースに登録してます
id,name,age
1,田中,20
2,木村,31
3,坂下,43


このデータをテーブルに書きだしたいのですが
pearなどのライブラリを使用しない場合、どのようなコードを書くのが効率いいでしょうか?
mysql以外のデータベースは使用しないのでmysqlに特化した書き方をどなたかご教示お願いいたします

798:796
09/04/02 11:40:45
>>797
$link = mysql_connect('localhost','ユーザ名','パスワード名');
mysql_select_db('データベース名');
$sql = "select * from テーブル名";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$data['id'];
$data['name'];
$data['age'];
}

じゃないの?


799:nobodyさん
09/04/02 11:48:45 e2MYzFKZ
すみません、僕もちょっと似たようなこと?で質問させてください
>>797さんのデータで
id,name,age
1,田中,20
2,木村,31
3,坂下,43
とありますが、たとえばID2の木村さんの行だけを取得する場合、
while ( $data = mysql_fetch_array ( $result ) ) {
if (2==$data['id']) {
$id = $data['id'];
$name = $data['name'];
$age = $data['age'];
break;
}
}
とやってきたのですが、MYSQLではピンポイントで取得することができないってことでしょうか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch