基於 Allan R. 的初始構想,我為使用 PHP 8.2 和更早版本的使用者開發了改進版的 json_validate 函式。此函式模擬了 PHP 8.3 中引入的功能,提供在早期 PHP 版本中驗證 JSON 字串的有效方法。
```php
if (!function_exists('json_validate')) {
/**
* 驗證 JSON 字串。
*
* @param string $json 要驗證的 JSON 字串。
* @param int $depth 最大深度。必須大於零。
* @param int $flags JSON 解碼選項的位元遮罩。
* @return bool 如果字串是有效的 JSON,則返回 true,否則返回 false。
*/
function json_validate($json, $depth = 512, $flags = 0) {
if (!is_string($json)) {
return false;
}
try {
json_decode($json, false, $depth, $flags | JSON_THROW_ON_ERROR);
return true;
} catch (\JsonException $e) {
return false;
}
}
}
```
主要改進
- 字串檢查:新增了驗證以確保輸入是字串。
- 錯誤處理:利用 try-catch 有效地捕捉和處理 JsonException。
- 向下相容性:可安全地整合到舊版 PHP 版本中,並在 PHP 8.3+ 中自動延遲到原生功能。