You need to enable JavaScript to run this app. 为什么PHP字符串变量在表单中使用时会在空格处截断?
优惠活动
大模型
产品
解决方案
定价
更多

为什么PHP字符串变量在表单中使用时会在空格处截断?

问题根因

字符串截断的核心原因是你没有对输出到HTML属性的变量做HTML实体转义,且部分表单字段的value属性未统一包裹引号。当变量值包含空格、引号等HTML特殊字符时,浏览器会将这些字符识别为属性结束标记,导致后续内容被截断或识别为无效属性。

解决方法

使用PHP内置函数htmlspecialchars()对所有输出到HTML属性的变量做转义,该函数会将引号、&、<>等特殊字符转换为HTML实体,避免破坏HTML结构,同时指定ENT_QUOTES参数同时转义单、双引号,适配不同的属性包裹方式。

修改后的代码示例

<?php
include "msbkeys.php";

if(isset($_POST['editcontractor']))
{
    $contractorid = $_POST['contractorid'];
    $contractorfirstname = $_POST['contractorfirstname'];
    $contractorlastname = $_POST['contractorlastname'];
    $contractorcompany = $_POST['contractorcompany'];
    $contractoremail = $_POST['contractoremail'];
    $contractorphone = $_POST['contractorphone'];
    echo $contractorcompany;
    echo "<form method='POST'>
<input type='hidden' name='contractorid' value='" . htmlspecialchars($contractorid, ENT_QUOTES) . "'>
     First name: <input type='text' name='firstname' value='" . htmlspecialchars($contractorfirstname, ENT_QUOTES) . "'>
  <br/>
  Last name: <input type='text' name='lastname' value='" . htmlspecialchars($contractorlastname, ENT_QUOTES) . "'>
  <br/>
  Company: <input type='text' name='company' value='" . htmlspecialchars($contractorcompany, ENT_QUOTES) . "'>
  <br/>
  Email: <input type='text' name='email' value='" . htmlspecialchars($contractoremail, ENT_QUOTES) . "'>
  <br/>
  Phone: <input type='text' name='phone' value='" . htmlspecialchars($contractorphone, ENT_QUOTES) . "'>
  <br/>
  <input type='submit' name='updatecontractor' value='Submit'>
</form>";
}
mysqli_close($db); // Close connection   
?>

额外说明

所有HTML属性值都统一用引号包裹,配合htmlspecialchars()转义后,哪怕变量值包含空格、单引号、双引号也不会破坏HTML结构,浏览器会自动将转义后的实体还原为原始字符,不会出现截断问题。

内容的提问来源于stack exchange,提问作者Tom Mitchell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 17:54:05