php文本字符串变量,其中包含空格或引号不在heredoc html表单中

时间:2012-02-17 19:19:28

标签: php html forms heredoc

我查询mySql数据库表并检索如下所示的文本字符串:

  This is a piece of a bronze artifact from the 'Bronze Age' -- it's in outstanding shape.
  His amusing comment on the 3rd-century clay bowl:  "Wow, she's a real piece!"
  It's no secret that you 'don't mishandle old parchment artifacts, they're "very" fragile' -- yet it still happens.

问题 - 我使用php变量来保存从数据库读取的上述字符串,并使用我的heredoc形式的PHP变量。我立刻看到一个字符串在遇到字符串中的第一个空格时被截断 - 表单只显示文本到第一个空格。

所以我在我的PHP变量中以heredoc形式放置单引号(见下文)。

现在,当来自数据库的字符串有单引号时,我会被截断。

我可以在我的php变量周围加上引号,但是当单引号,双引号时我会截断文本字符串 如果我不引用heredoc中的PHP变量 - 字符串中的空格会截断该点上的字符串。

我正在使用PHP,这里是从mySql查询结果中获取数据的代码,将数据库数据存储到PHP变量中,然后在heredoc中使用它们:

   $row = mysql_fetch_row($result);
   //var_dump($row);  // the dump proves that the full string comes 
                      // out of the database, with spaces, single and double quotes

   $descriptionOfArtifact = $row[0];
   $commentsAboutTheDiggingSite = $row[1];
   $expertRecommendationsForRestoring = $row[2];

     // output the next row from the Artifacts table...
       echo <<< NEXT_ROW_HEREDOC
         <input type="text" id="Description"   
             name="descrip" value='$descriptionOfArtifact' readonly="readonly"></input>     
         <input type="text" id="Comments"       
             name="comments" value='$commentsAboutTheDiggingSite' readonly="readonly"></input>    
         <input type="text" id="Experts"
              name="experts" value='$expertRecommendationsForRestoring' readonly="readonly"></input>    
   NEXT_ROW_HEREDOC;

我需要此表单来显示从数据库中读取并存储在上述PHP变量中的全文字符串。我认为变量名称周围的单引号会这样做,但我认为heredoc正在弄乱它(不知何故)。

所以在heredoc中,我如何使用PHP变量并能够看到:

  • 单引号
  • 双引号
  • 空格
  • html标签
  • 任何可打印的角色,真的

以heredoc形式?

2 个答案:

答案 0 :(得分:3)

<<<和文本结束关键字之间有空格。这可能导致了这个问题。

此外,当您将htmlspecialchars$row[0]$row[1]分配给变量时,请致电$row[2],并在value="..."上使用双引号属性。

答案 1 :(得分:0)

在简单的 Html 代码中,您需要使用双引号显示您的值&#34;&#34;如果您使用php通过 ECHO 打印一些HTML代码,则需要使用单引号在输入框中显示值