If you compare two numerical strings, they are compared as integers

概要

"1", "01", "001" のように、数値の羅列に見えるページ名で、数値としては同一であるように見えるページが複数あった場合、これらが全て同一であるとみなされてしまっています。

これはPHPの文字列の比較に関する仕様を考慮できていないのが原因です。two numerical strings (数字の羅列に見える文字列型の値二つ) を比較する時は、 == ではなく === 演算子を使って比較しなければ(意図した結果にはならず) それぞれが 数値として 比較されてしまいます。

関連

メッセージ

メニューバーでrecent プラグインを利用した時、今見ているページ以外のページまでリンクされなくなってしまいます。
この現象が発生するのは、整数のみで構成されたページ名で以下のような場合です。


BugTrack2/235 の修正をする前の環境(1.4.7_notb)で試しても同じ結果になったので、原因は別の場所にあるようです。



変更すべきか、などの優先順位をこちらで付けられない*1ので、確認をお願いします*2
ステータスを「完了」ではなく、調査開始という意味で「着手」にすればよかった、とちょっと後悔してたり。 -- 2007-05-19 (土) 14:32:38


MD5 hash 関係


返り値としてFALSE だけでなく、FALSE として評価される 0 や "" といった値を返す可能性もある関数

readdir 関数


*1 処理の流れを全部把握してないから、特にlib フォルダ以下のファイル
*2 すでに始めていたら、すみません。修正告知と内容がかぶってしまう(であろう)このコメントを消してください。
*3 ソースの断片まで追おうとすると大変ですが、commit log が追えるならその手前までいけます

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-08 (月) 13:09:28
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.286 sec.

SourceForge