PHP在线编译器使用方法
- 在编辑器中编写或粘贴 PHP 脚本。开头的
<?php标签是可选的;如果您的代码完全没有 PHP 标签,系统会自动补上。混合 HTML 与<?php ... ?>代码块的模板同样可用。点击重置示例可恢复初始代码。 - 点击运行,或使用 Ctrl + Enter(Mac 上为 ⌘ + Enter)。
- 脚本通过
echo、print、printf或var_dump输出的所有内容都会显示在输出面板中。警告和致命错误会高亮显示。 - 选择 5 秒、15 秒或 60 秒的时间限制。运行时间超出限制的脚本会被自动停止,点击停止可立即结束运行。
首次运行时会下载 PHP 解释器,大小约 12 MB。浏览器会将其缓存,因此之后的运行启动快得多。使用复制或 main.php 来保存您的脚本。
PHP 在您的浏览器内本地运行,因此您的代码绝不会发送到或保存在我们的服务器上。编辑器只会把您上次的脚本记在浏览器的本地存储中,别无他处。
支持的功能
该编译器通过 php-wasm(编译为 WebAssembly 的 PHP 解释器)运行 PHP 8。这不是模拟;您的代码由 PHP 本身执行。
- PHP 8 语法:类型化属性、联合类型、
match表达式、命名参数、箭头函数(fn)、空安全运算符(?->),以及内置版本支持的枚举。 - 核心函数,涵盖字符串(
str_contains、sprintf、explode)、数组(array_map、usort、array_filter)、数学和日期。 - JSON:使用
json_encode和json_decode。 - 正则表达式:使用
preg_*函数。 - 类、接口、trait、闭包、生成器和异常。
限制:
- 没有网络扩展:
curl、套接字和 HTTP 请求均不可用。 - 没有数据库服务器:没有可连接的 MySQL 或 PostgreSQL。要练习 SQL,请使用 SQL在线编译器。
- 没有 Web 服务器环境:
$_GET、$_POST、会话和 Cookie 不会获得真实的请求数据,HTML 输出以文本显示,不会被渲染。 - 不支持 Composer 包,也没有标准输入。
PHP 速查
<?php
$prices = ['apple' => 1.20, 'bread' => 2.50, 'milk' => 0.99];
$expensive = array_filter($prices, fn($p) => $p > 1);
arsort($expensive);
foreach ($expensive as $item => $price) {
printf("%-6s %5.2f\n", $item, $price);
}
$label = match (true) {
count($prices) > 2 => 'big basket',
default => 'small basket',
};
echo $label, PHP_EOL;
echo json_encode($prices, JSON_PRETTY_PRINT), "\n";
| 任务 | 语法 |
|---|---|
| 变量 | $name = "Ada"; |
| 字符串插值 | "Hello, {$name}!" |
| 关联数组 | $a = ['key' => 'value']; |
| 遍历键和值 | foreach ($a as $k => $v) { } |
| 查看某个值 | var_dump($x); 或 print_r($x); |
| 空合并 | $v = $a['x'] ?? 'default'; |
使用技巧
- 行尾请加上
"\n"或PHP_EOL;echo本身不会添加换行。 - 用
print_r($array)可紧凑地查看嵌套数组,若还需要类型和长度则用var_dump()。 - 想得到易读的 JSON,请传入
JSON_PRETTY_PRINT,或把输出粘贴到 JSON格式化与校验工具中进行验证。 - 每次运行都会启动一个全新的解释器,因此上一次运行中的变量和函数不会保留。
常见问题
我的代码必须以 <?php 开头吗?
不必。如果脚本中没有 <?php 标签,系统会自动添加一个。您也可以像 Web 服务器上的 .php 文件那样,编写内嵌 <?php ... ?> 代码块的 HTML。
可以连接 MySQL 吗?
不可以。解释器在您的浏览器中运行,没有网络访问权限,也没有数据库服务器。要练习 SQL,SQL在线编译器会在浏览器中为您提供一个真实的 SQLite 数据库。
为什么 curl 或带 URL 的 file_get_contents() 不起作用?
这个 WebAssembly 版本不包含网络扩展,而且浏览器不允许这样的沙箱发起原始网络连接。
这与在服务器上运行 PHP 一样吗?
就语言特性以及字符串、数组和 JSON 函数而言,是一样的:它就是真正的 PHP 引擎。凡是依赖 Web 服务器、扩展或网络的内容,行为都会有所不同。
更新于