# INI バリデーター

php.ini、my.cnf、デスクトップエントリー、ツール設定などの INI 設定ファイルを検証し、サービスが起動を拒否する前に問題を見つけます。バリデーターは各行を読み取り、セクション、キーと値の組、コメント、引用符で囲まれた値を受け付けます。解釈できない行、閉じられていないセクションヘッダー、空のキー、閉じられていない引用符を報告します。また、重複するキーやセクションにも警告を表示し、各セクションのキー一覧を表示するため、構造をひと目で確認できます。

## よくある質問

### ここで有効と判定される INI ファイルの条件は何ですか？

空でない各行は、[database] のようなセクションヘッダー、host = localhost のような値を持つキー、またはコメントでなければなりません。これらに該当しない行、閉じられていないセクションヘッダー、空のキー、閉じられていない引用符付きの値はエラーになります。エラーがあるとファイルは無効と判定され、行番号とともに表示されます。

### INI に統一された標準はありません。バリデーターはどのルールを使用しますか？

PHP、MySQLなど多くのツールで使われている一般的な方言に準拠しています。キーと値は = で区切り、= がない場合は : で区切ります。コメントは ; または # で始まり、引用符で囲まれていない値の後に空白を挟んで ; または # がある場合は、インラインコメントとして扱われます。セクション名には、Git形式のセクションのように、空白、ドット、引用符を含められます。INI にはデータ型がないため、値の型チェックは行いません。

### キーが重複しているとどうなりますか？

同じセクションでキーが二重に定義されている場合、2つ目の定義の行番号とともに警告として報告されます。ほとんどの INI パーサーは最後の値を保持し、それ以前の値を黙って無視します。ファイルは有効と報告されます。

### セクションが重複しているとどうなりますか？

同じセクションヘッダーが再び現れると警告として報告され、そのキーは最初に現れたセクションのキーと統合されます。プログラムによって繰り返しセクションの扱いが異なるため、通常は1つにまとめるのが最善です。

### extension[] のような配列キーはサポートされていますか？

はい。PHP設定ファイルのように、[] で終わるキーは値をリストにまとめます。同じキーを繰り返しても重複として報告されません。セクション一覧にはキーが1回だけ表示されます。

### グローバルキーとは何ですか？

最初のセクションヘッダーより前にあるキーは、どのセクションにも属しません。結果では「グローバルキー」として一覧表示され、多くのツールではデフォルト値または最上位の設定として扱われます。

### 引用符で囲まれた値はどのように扱われますか？

二重引用符で囲まれた値には ;、#、= を含められ、エスケープシーケンス \", \\, \n、\t を使用できます。一重引用符で囲まれた値はそのまま扱われます。同じ行で閉じられていない引用符付きの値はエラーになります。引用符で囲まれていない値は、前後の空白が削除されます。

### 構造はどこまで一覧表示されますか？

結果には、最大200個のセクションについて、各セクションのキー数とキー名が表示されます。各セクションのキーは最大50個まで表示され、すべてのセクション数とキー数も表示されます。エラーと警告はそれぞれ最大20件まで表示され、それを超える場合は追加件数が示されます。

### [a.b] のような入れ子のセクションは認識されますか？

セクション名は記述どおりに保持されるため、[a.b] は a.b という名前のセクションであり、a のサブセクションではありません。ドットを入れ子として扱うかどうかは、プログラムによって異なります。バリデーターが確認するのは、名前が空でないことと、ヘッダーが閉じられていることだけです。

### ファイルの最大サイズと変換方法を教えてください。

入力サイズは最大 5 MiB です。有効な INI ファイルをJSON、YAML、TOMLなどの形式に変換するには、セクションをオブジェクトに変換するデータ形式コンバーターを使用してください。

ここに広告を掲載しませんか？

[メールでお問い合わせ](mailto:hi@dennn.is?subject=OneClick%20Pro%E3%81%A7%E3%81%AE%E5%BA%83%E5%91%8A%E6%8E%B2%E8%BC%89)

[広告 WordPress向けのエージェント対応プラグインスイート。](https://sleekwp.com/?ref=oneclickpro)
