PHP 伪协议是一种特殊的协议,它允许开发者以类似文件路径的方式访问特定资源。以下是一些常见的 PHP 伪协议及其用途:
### 常见 PHP 伪协议
1. **file://**
- **用途**:访问本地文件系统。
- **示例**:`file://path/to/file.txt`
2. **http:// 和 https://**
- **用途**:访问 HTTP 或 HTTPS URL。
- **示例**:`http://example.com`
3. **ftp://**
- **用途**:访问 FTP URL。
- **示例**:`ftp://example.com/file.txt`
4. **php://**
- **用途**:访问各种输入/输出流(I/O streams)。
- **示例**:
- `php://input`:读取原始 POST 数据。
- `php://output`:写入输出流。
- `php://memory` 和 `php://temp`:用于临时数据存储。
5. **zlib://**
- **用途**:访问压缩流。
- **示例**:`zlib://path/to/file.gz`
6. **data://**
- **用途**:内联数据(RFC 2397)。
- **示例**:`data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==`
7. **glob://**
- **用途**:查找匹配的文件路径模式。
- **示例**:`glob://*.txt`
8. **phar://**
- **用途**:访问 PHP 归档(PHAR)文件。
- **示例**:`phar://path/to/archive.phar`
9. **ssh2://**
- **用途**:通过 SSH 访问文件。
- **示例**:`ssh2://user@host:port/path/to/file`
10. **rar://**
- **用途**:访问 RAR 压缩文件。
- **示例**:`rar://path/to/archive.rar`
11. **ogg://**
- **用途**:访问 OGG 音频流。
- **示例**:`ogg://path/to/audio.ogg`
12. **expect://**
- **用途**:处理交互式流。
- **示例**:`expect://command`
### 示例代码
以下是一个使用 `php://input` 读取原始 POST 数据的示例:
```php
<?php
// 读取原始 POST 数据
$data = file_get_contents("php://input");
echo $data;
?>
```
使用 `php://filter` 进行 Base64 编码的示例:
```php
<?php
// 读取并 Base64 编码文件内容
$data = file_get_contents("php://filter/read=convert.base64-encode/resource=path/to/file.txt");
echo $data;
?>
```
这些伪协议在特定场景下非常有用,可以简化资源访问和数据处理。