<commit_before>&nbsp;

<p align="center">
  <img src="http://i.imgur.com/QqGiSvi.png"/>
</p>
<p align="center">
  <i>Stop it when it's false.</i>
</p>

&nbsp;


# Jajjimento

Jajjimento（ジャッジメント）中文涵意是風紀委員，這是用來驗證表單的 PHP 類別，

用法簡單，你甚至可以先儲存設定，假若要重複使用該規則，只需要幾條指令。

和以往的版本不同，這次比較偏向物件導向方式。

&nbsp;

## 特色

1. 可以儲存規則供未來重複使用。

2. 簡單明瞭。

3. 可以檢查陣列，或是直接檢查變數。

4. 更具有意義的函式名稱卻又簡短。 

5. 支援艾拉。

&nbsp;

## 索引

1. [舉例](#舉例)

2. [設置來源 或 採用預先規則](#設置來源-或-採用預先規則)

  * [來源模式](#來源模式)
  * [手動模式](#手動模式)
  * [採用預先規則](#採用預先規則)

3. [設置種類](#設置種類)

  * [`min()` 和 `max()` 的用法](#min-和-max-的用法)
  * [`dateFormat()` 的用法](#dateformat-的用法)
  * [`inside()` 的用法](#inside-的用法)
  * [`urlNot()` 的用法](#urlnot-的用法)
  * [`target()` 的用法](#target-的用法)

4. [設置附加功能](#設置附加功能)

  * [`required()` 或 `req()` 的用法](#required-或-req-的用法)
  * [`format()` 的用法](#format-的用法)
  * [`trim()` 的用法](#trim-的用法)

5. [驗證](#驗證)

6. [取得驗證後的資料](#取得驗證後的資料)

7. [儲存成預先規則](#儲存成預先規則)

8. [當「艾拉」存在的時候](#當艾拉存在的時候)

&nbsp;

## 舉例

這次的舉例，採用的是多數的情況，你可能會想檢查你接收的 $_POST 表單，你就應該這樣做：

```php
/** 設定要檢查的來源為 $_POST 陣列 */
$jaji->source($_POST)

     /** 稍後會提及如何設定規則 */
     ->add('username')->type('length')->min(3)->max(16)->required()
     
     /** 你也可以用簡寫 */
     ->add('username')->length(3, 16)->req()

     /** 一旦設定都好了，接下來就該檢查了！ */
     ->check();
```

&nbsp;

## 設置來源 或 採用預先規則

在風紀委員中，你有兩種方式可以選擇，讀取預先規則或採用來源模式。

而來源模式分成下列兩種：

* 來源 － 可以是 `$_POST` 或 `$_GET`，甚至是一個*陣列*。
* 手動 － 當你的來源不固定，或者來源是一個變數而非陣列，就應該採用手動。

&nbsp;

#### 來源模式

若你要檢查一個陣列中的資料，你就應該用 `source()` 啟用來源模式。

在這裡以檢查一個 $_POST 表單為例：

```php
$jaji->source($_POST)
     ->add('欄位名稱')   // 假設欄位名稱是 username，那麼你就會檢查 $_POST['username']。
```

&nbsp;

#### 手動模式

今天如果你並沒有陣列要檢查，而是想直接檢查一個變數，

**你則不需要設置 `source()` 而是應該直接進行新增規則的動作。**

```php
$jaji->add($Test)   // 在這個情況，$Test 會直接成為來源，該變數的內容會被檢查。
```

&nbsp;

#### 採用預先規則

你可以利用 `loadCheck()` 直接套用一個你先前儲存的規則並直接檢查，稍後會提及如何儲存一個規則。

```php
$jaji->source($_POST)
     ->loadCheck($Rule)   // 接下來會套用 $Rule 內所含有的規則並檢查。
```

&nbsp;

## 設置種類

透過 `type()` 來設定一個規則要檢查的種類，如果你嫌這種用法太長，**我們稍後會提及縮寫**，下列是目前可用的種類:

| 種類英文   |   簡短    |        相關函式      |                                    種類說明                                |
| ---------- | --------- | -------------------- | -------------------------------------------------------------------------- |
| length     | 長度      |  `min()`, `max()`    | 字串長度；字串必須短於 `max()`，也至少長於 `min()` 所設定的值。            |
| range      | 範圍      |  `min()`, `max()`    | 數字範圍；數字必須小於 `max()`，也至少大於 `min()` 所設定的值。            |
| date       | 日期      |  `dateFormat()`      | 日期格式；日期必須是 `dateFormat()` 所設定的格式，例如 `YYYY-MM-DD`。      |
| in         | 清單      |  `inside()`          | 是否存在；這個值必須在 `inside()` 所設定的陣列內。                         |
| email      | 電郵      |                      | 電子信箱；內容必須是符合電子信箱格式。                                     |
| gender     | 性別      |                      | 性別種類；性別必須是 f(emale) 或 m(ale) 或 o(ther)。                       |
| ip         | IP        |                      | IP 地址 ；值必須符合 IPv4 或是 IPv6 的格式。                               |
| ipv4       | IPv4      |                      | IP 地址 ；值必須符合 IPv4 格式。                                           |<commit_msg>typo.<commit_after>&nbsp;

<p align="center">
  <img src="http://i.imgur.com/QqGiSvi.png"/>
</p>
<p align="center">
  <i>Stop it when it's false.</i>
</p>

&nbsp;


# Jajjimento

Jajjimento（ジャッジメント）中文涵意是風紀委員，這是用來驗證表單的 PHP 類別，

用法簡單，你甚至可以先儲存設定，假若要重複使用該規則，只需要幾條指令。

和以往的版本不同，這次比較偏向物件導向方式。

&nbsp;

## 特色

1. 可以儲存規則供未來重複使用。

2. 簡單明瞭。

3. 可以檢查陣列，或是直接檢查變數。

4. 更具有意義的函式名稱卻又簡短。 

5. 支援艾拉。

&nbsp;

## 索引

1. [舉例](#舉例)

2. [設置來源 或 採用預先規則](#設置來源-或-採用預先規則)

  * [來源模式](#來源模式)
  * [手動模式](#手動模式)
  * [採用預先規則](#採用預先規則)

3. [設置種類](#設置種類)

  * [`min()` 和 `max()` 的用法](#min-和-max-的用法)
  * [`dateFormat()` 的用法](#dateformat-的用法)
  * [`inside()` 的用法](#inside-的用法)
  * [`urlNot()` 的用法](#urlnot-的用法)
  * [`target()` 的用法](#target-的用法)

4. [設置附加功能](#設置附加功能)

  * [`required()` 或 `req()` 的用法](#required-或-req-的用法)
  * [`format()` 的用法](#format-的用法)
  * [`trim()` 的用法](#trim-的用法)

5. [驗證](#驗證)

6. [取得驗證後的資料](#取得驗證後的資料)

7. [儲存成預先規則](#儲存成預先規則)

8. [當「艾拉」存在的時候](#當艾拉存在的時候)

&nbsp;

## 舉例

這次的舉例，採用的是多數的情況，你可能會想檢查你接收的 $_POST 表單，你就應該這樣做：

```php
/** 設定要檢查的來源為 $_POST 陣列 */
$jaji->source($_POST)

     /** 稍後會提及如何設定規則 */
     ->add('username')->type('length')->min(3)->max(16)->required()
     
     /** 你也可以用簡寫 */
     ->add('username')->length(3, 16)->req()

     /** 一旦設定都好了，接下來就該檢查了！ */
     ->check();
```

&nbsp;

## 設置來源 或 採用預先規則

在風紀委員中，你有兩種方式可以選擇，讀取預先規則或採用來源模式。

而來源模式分成下列兩種：

* 來源 － 可以是 `$_POST` 或 `$_GET`，甚至是一個*陣列*。
* 手動 － 當你的來源不固定，或者來源是一個變數而非陣列，就應該採用手動。

&nbsp;

#### 來源模式

若你要檢查一個陣列中的資料，你就應該用 `source()` 啟用來源模式。

在這裡以檢查一個 $_POST 表單為例：

```php
$jaji->source($_POST)
     ->add('欄位名稱')   // 假設欄位名稱是 username，那麼你就會檢查 $_POST['username']。
```

&nbsp;

#### 手動模式

今天如果你並沒有陣列要檢查，而是想直接檢查一個變數，

**你則不需要設置 `source()` 而是應該直接進行新增規則的動作。**

```php
$jaji->add($Test)   // 在這個情況，$Test 會直接成為來源，該變數的內容會被檢查。
```

&nbsp;

#### 採用預先規則

你可以利用 `loadCheck()` 直接套用一個你先前儲存的規則並直接檢查，稍後會提及如何儲存一個規則。

```php
$jaji->source($_POST)
     ->loadCheck($rule)   // 接下來會套用 $Rule 內所含有的規則並檢查。
```

&nbsp;

## 設置種類

透過 `type()` 來設定一個規則要檢查的種類，如果你嫌這種用法太長，**我們稍後會提及縮寫**，下列是目前可用的種類:

| 種類英文   |   簡短    |        相關函式      |                                    種類說明                                |
| ---------- | --------- | -------------------- | -------------------------------------------------------------------------- |
| length     | 長度      |  `min()`, `max()`    | 字串長度；字串必須短於 `max()`，也至少長於 `min()` 所設定的值。            |
| range      | 範圍      |  `min()`, `max()`    | 數字範圍；數字必須小於 `max()`，也至少大於 `min()` 所設定的值。            |
| date       | 日期      |  `dateFormat()`      | 日期格式；日期必須是 `dateFormat()` 所設定的格式，例如 `YYYY-MM-DD`。      |
| in         | 清單      |  `inside()`          | 是否存在；這個值必須在 `inside()` 所設定的陣列內。                         |
| email      | 電郵      |                      | 電子信箱；內容必須是符合電子信箱格式。                                     |
| gender     | 性別      |                      | 性別種類；性別必須是 f(emale) 或 m(ale) 或 o(ther)。                       |
| ip         | IP        |                      | IP 地址 ；值必須符合 IPv4 或是 IPv6 的格式。                               |
| ipv4       | IPv4      |                      | IP 地址 ；值必須符合 IPv4 格式。                                           |
{'fraction_non_alphanumeric': 0.23122403323745605, 'fraction_numerical': 0.007670182166826462, 'mean_word_length': 1.903061224489796, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 47, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 25, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6755087', 'n_tokens_mistral': 4034, 'n_tokens_neox': 4311, 'n_words': 412}