【问题标题】:Weird PHP echo behaviour when setting echo'ing into a html value field将回显设置为 html 值字段时出现奇怪的 PHP 回显行为
【发布时间】:2015-11-05 10:48:24
【问题描述】:

让我们直接进入问题。

我有一个 DB 条目,它是列 name1 中的一个字符串,看起来像 f.e.像这样:COMPANYNAME DIVADAY

这个字符串的主要属性是它主要是一个由逗号分隔的两个或多个单词组合而成的字符串。

现在当我像这样打印这些条目时:

echo ("<td><input id=\"firmenname1\" type=\"text\" value=".$row['firmenname1']." /></td>");

现在我在浏览器中检查结果并体验了一些有趣的输出。输入的值设置为字符串中的 first 单词。因此,此示例中的值类似于 COMPANYNAME。 当我检查元素以检查它是否在空间中丢失时,我看到了这个:

<input type="text" value="COMPANYNAME" DIVADAY />

不知何故,值获取属性在每个逗号之后或之前被关闭,因此用户无法看到整个名称。

在检查我的数据库中的字符串时,我真的看不出是否有任何隐藏字符导致该问题。

【问题讨论】:

    标签: php html sql-server


    【解决方案1】:

    用这种方式尝试回显

    echo "<td><input id='firmenname1'  type='text' value=".$row['firmenname1']." /></td>";
    

    【讨论】:

    • 天哪……我怎么能错过。谢谢:9
    【解决方案2】:

    值属性缺少引号。

    echo ("<td><input id=\"firmenname1\" type=\"text\" value=\"{$row['firmenname1']}\" /></td>");
    

    您也可以尝试将addslashes 添加到值中。

    $firmenname1 = addslashes($row['firmenname1'])
    echo ("<td><input id=\"firmenname1\" type=\"text\" value=\"{$firmenname1}\" /></td>");
    

    【讨论】:

    • 天哪……我怎么能错过。谢谢:9
    【解决方案3】:

    您忘记在类型数据库输出周围加上引号: 你应该写:

    echo ("<td><input id=\"firmenname1\" type=\"text\" value=\"".$row['firmenname1']."\" /></td>");
    

    按照它的编写方式,html代码变成了: 并且浏览器将 COMPANYNAME 解析为值,将 divaday 解析为输入元素的单独属性。如果您在“COMPANYNAME DIVADAY”周围加上额外的引号,您应该会看到正确的结果。

    【讨论】:

    • 天哪……我怎么能错过。谢谢:9
    【解决方案4】:

    尝试在 value 属性周围添加引号:

    echo ("<td><input id=\"firmenname1\" type=\"text\" value=\"".$row['firmenname1']."\" /></td>");
    

    【讨论】:

    • 天哪……我怎么能错过。谢谢:9
    【解决方案5】:

    为避免混淆,我通常将要使用的数组项转换为变量,即 $firmenname1 = $row['firmenname1'];这样您就可以在使用前清理和格式化数据。额外的好处是您不必担心正确的引号和反斜杠

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 2022-10-14
      • 2013-11-09
      • 2015-12-22
      • 2010-10-07
      相关资源
      最近更新 更多