在线PHP - IDE、编辑器、编译器、解释器

使用编译为WebAssembly的真实PHP解释器在线执行PHP 8脚本。非常适合测试代码片段、数组、字符串和JSON函数。

PHP 8 (php-wasm) · 在浏览器中运行,代码绝不会发送到我们的服务器。
main.phpPHP
输出

            
        
Ctrl/⌘ + Enter 运行

在线 PHP 编译器的功能(IDE、编辑器 & 解释器)

免费在线编写、运行和测试 PHP 代码。本页面集在线 PHP IDE、代码编辑器、编译器和解释器于一体:输入代码,点击“运行”,立即查看输出。一切都在浏览器中运行,无需安装,也无需注册账号。

  • 即时运行代码: PHP 8 (php-wasm),首次加载后一秒内即可输出结果。
  • 代码编辑器: 语法高亮、行号、括号匹配和自动补全括号。
  • 清晰的错误提示: 错误信息和警告会显示在输出面板中,与在您自己的电脑上一样。
  • 全屏: Ctrl/⌘ + Shift + F,可调节字号,支持并排或堆叠布局,面板大小可调。
  • 自动保存: 代码保存在您的浏览器中;可一键下载为 main.php 或复制。
  • 放心尝试: 时间限制和“停止”按钮可终止无限循环。
  • 私密: PHP 运行时在您的设备上运行,代码绝不会被上传。
  • 深色模式 以及键盘快捷键:Ctrl/⌘ + Enter 运行代码。
  • 免费: 无需注册,不限使用次数。

学习其他编程语言

PHP在线编译器使用方法

  1. 在编辑器中编写或粘贴 PHP 脚本。开头的 <?php 标签是可选的;如果您的代码完全没有 PHP 标签,系统会自动补上。混合 HTML 与 <?php ... ?> 代码块的模板同样可用。点击重置示例可恢复初始代码。
  2. 点击运行,或使用 Ctrl + Enter(Mac 上为 ⌘ + Enter)。
  3. 脚本通过 echo、print、printf 或 var_dump 输出的所有内容都会显示在输出面板中。警告和致命错误会高亮显示。
  4. 选择 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格式化与校验工具中进行验证。
  • 每次运行都会启动一个全新的解释器,因此上一次运行中的变量和函数不会保留。
提示:在测试 preg_match 模式?请先在正则表达式测试工具中构建并调试,再把它粘贴到分隔符之间,例如 '/^\d+$/'。

常见问题

我的代码必须以 <?php 开头吗?

不必。如果脚本中没有 <?php 标签,系统会自动添加一个。您也可以像 Web 服务器上的 .php 文件那样,编写内嵌 <?php ... ?> 代码块的 HTML。

可以连接 MySQL 吗?

不可以。解释器在您的浏览器中运行,没有网络访问权限,也没有数据库服务器。要练习 SQL,SQL在线编译器会在浏览器中为您提供一个真实的 SQLite 数据库。

为什么 curl 或带 URL 的 file_get_contents() 不起作用?

这个 WebAssembly 版本不包含网络扩展,而且浏览器不允许这样的沙箱发起原始网络连接。

这与在服务器上运行 PHP 一样吗?

就语言特性以及字符串、数组和 JSON 函数而言,是一样的:它就是真正的 PHP 引擎。凡是依赖 Web 服务器、扩展或网络的内容,行为都会有所不同。

更新于

已复制到剪贴板