
本文详解 php + html 文本转二进制脚本无法执行的常见原因(如文件扩展名错误),并提供可直接运行的完整修复代码、部署要点与安全建议。
你提供的 PHP 脚本逻辑本身是正确的:它通过 ord() 获取字符 ASCII 值,再用 decbin() 转为二进制,并以空格分隔。但页面中显示原始 PHP 代码(如 <?php echo $input; ?> 未被解析)、表单提交无响应——这几乎可以确定是服务器未解析 PHP,而非代码缺陷。
? 核心原因:文件未被 PHP 引擎处理
最常见的原因是:文件保存为 .html 或 .htm 后缀(如 converter.html),而非 .php。Web 服务器(如 Apache、Nginx)默认只对 .php 扩展名启用 PHP 解析器。若命名为 converter.html,服务器会直接将 PHP 标签作为纯文本发送给浏览器,导致源码可见、逻辑不执行。
✅ 正确做法:
- 将文件重命名为 converter.php;
- 确保通过 本地 PHP 开发环境(如 XAMPP、WAMP、MAMP)或支持 PHP 的 Web 服务器 访问(例如 http://localhost/converter.php),切勿双击 HTML 文件打开(此时走 file:// 协议,PHP 完全不生效)。
✅ 修复后的完整代码(增强健壮性)
<?php
$input = '';
$binary = '';
// 使用 isset() + !empty() 双重校验,避免未定义索引警告
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit']) && !empty($_POST['input'])) {
$input = trim($_POST['input']);
// 逐字符转二进制(补足8位,提升可读性)
for ($i = 0; $i < strlen($input); $i++) {
$ascii = ord($input[$i]);
$binary .= str_pad(decbin($ascii), 8, '0', STR_PAD_LEFT) . ' ';
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>文本转二进制转换器</title>
<style>
body { font-family: -apple-system, sans-serif; margin: 2rem; }
textarea, input[type="submit"] { padding: 0.5rem; font-size: 1rem; }
.result { background: #f5f5f5; padding: 1rem; margin-top: 1rem; border-radius: 4px; }
</style>
</head>
<body>
<h1>? 文本 → 二进制 转换器</h1>
<form method="post">
<label for="input">请输入要转换的文本:</label><br>
<textarea id="input" name="input" rows="4" cols="50" placeholder="例如:Hello"><?php echo htmlspecialchars($input); ?></textarea><br><br>
<input type="submit" name="submit" value="→ 转换为二进制">
</form>
<?php if (!empty($binary)): ?>
<div class="result">
<p><strong>输入:</strong>"<?php echo htmlspecialchars($input); ?>"</p>
<p><strong>二进制(8位补零):</strong><br><?php echo htmlspecialchars($binary); ?></p>
</div>
<?php endif; ?>
</body>
</html>⚠️ 关键注意事项
- 安全防护:使用 htmlspecialchars() 输出用户输入内容,防止 XSS 攻击;
- 输入清理:trim() 去除首尾空格,!empty() 避免空提交;
- 格式优化:str_pad(decbin($ascii), 8, '0', STR_PAD_LEFT) 补齐 8 位(标准 ASCII 字节),结果更规范(如 'A' → '01000001');
- 环境验证:在终端运行 php -v 确认 PHP 已安装;创建 info.php 写入 <?php phpinfo(); ?>,通过浏览器访问验证服务器是否正常解析 PHP。
? 总结:90% 的“PHP 代码显示为源码”问题,根源在于文件扩展名错误或未经 Web 服务器执行。务必使用 .php 后缀 + 本地服务器环境。代码逻辑只需微调即可稳健运行——无需重写,重命名即解决。











