2011-03-22 105 views
2

我试图用php变量填充HTML文本框。该变量是一个带有单引号的字符串,并从数据库中检索。将PHP字符串变量添加到包含引号的文本框的值

当我回应变量,它看起来应该是 - 即。 “这里是我的字符串”,所以它正确显示'单引号'。

但是,当我尝试将该变量放入文本框字段即。

<? echo("<input type='text' name = 'title' value='$title'/>");?> 

引号被忽略..

任何帮助,因为我已经尝试通过一些HTML格式的功能,但无济于事运行变量是极大的赞赏。

+0

你能否澄清你的意思是'引号被忽略'? – Shad 2011-03-22 00:50:03

+0

你是说一个字符串,比如''你怎么去?''变成''你要怎么走?'''? – alex 2011-03-22 00:50:43

回答

6

你应该把它改成这样:

<input type="text" name="title" value="<?php echo htmlentities($title, ENT_QUOTES); ?>" /> 

htmlspecialchars()htmlentities()用于字符串转换到HTML与正确的编码。

ENT_QUOTES选项确保撇号和语音标记也正确编码。

+1

+1对于把它所属的PHP放在'value'属性中只有 – Phil 2011-03-22 00:54:13

+0

感谢你的回应,那该死的很快..我已经整理过了。问题是我的价值='单引号。变量中的单引号就结束了。我只是在value =中使用了转义字符,而使用了双引号,即.. value = \“$ title \” – Mark 2011-03-22 01:03:33

+1

@Mark:即使您现在就开始工作吧。对该变量的内容进行一些小改动,可能会中断。一般来说,你输出的任何变量应该以这种方式处理。 – Orbling 2011-03-22 01:38:01

1

使用htmlentitieshtmlspecialchars与ENT_QUOTES标志在输出文本之前转义引号。

1
<?php echo '<input type="text" name="title" value="'.htmlentities($title, ENT_QUOTES).'" />'; ?> 
+0

如果'$ title'包含双引号? – Phil 2011-03-22 00:56:36

+0

你是对的... – 2011-03-22 01:03:36