2010-01-05 59 views
18

在我的php项目中,我有一个包含特殊charectors的值,比如“,”等(“5”英寸,“3.5”英寸等等),但它没有出现在文本字段中。这 是可以显示在文本框中该值是否有任何人帮我...包含双引号值的输入字段

回答

72

使用htmlentities:??

<input value="<?php echo htmlentities($value);?>"> 
+3

如果要保存未在数据库中引用的值,该怎么办?在执行SQL INSERT之前,您必须每次应用'html_entity_decode();'这听起来不错 – dynamic 2012-11-27 20:27:43

+4

yes123,不,你不知道。此编码将确保HTML文档中的值是正确的。网页浏览器会自动以正确的格式发送它。 – 2012-11-28 07:13:15

+0

你是对的!我错过了 – dynamic 2012-11-28 10:11:14

10

我想你的“文本框”是一个HTML元素<input>

如果是这样,你使用类似的东西显示它这样的:

echo '<input name="..." value="' . $yourValue . '" />'; 

如果是这种情况,就需要转义中都包含的您的变量的HTML,与htmlspecialchars

echo '<input name="..." value="' . htmlspecialchars($yourValue) . '" />'; 

请注意,您可能需要添加几个参数,特别是指定您正在使用的编码。


这样,考虑$yourValue已初始化是这样的:

$yourValue = '5 " inches'; 

你会从这个得到生成的HTML:

<input name="..." value="5 " inches" /> 

那一个,它的效果要好得多:

<input name="..." value="5 &quot; inches" /> 
+2

那么当你提交输入字段时会发生什么?它会进入像"这样的数据库,然后你必须将它转换到其他地方?如果你想用它的实际双引号提交它会怎么样。 – mikato 2012-03-14 14:59:59

+0

+1更具描述性,提及编码,因为'htmlspecialchars()'就足够了。 – DanMan 2013-12-02 14:26:57

0

试试这个

echo '<input name="..." value="' . htmlspecialchars(stripslashes($yourValue)) . '" />'; 

<input name="..." value="<?php echo htmlspecialchars(stripslashes($value)); ?>"> 

祝你好运;)

5

使用的字符集UTF-8,我用下面的代码来获得Iñtërnâtiônàlizætiøn和双(或单)引述权:

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

ps:这在有人提交表单后有用,但输入未验证时有用。

+0

我更喜欢使用'stripcslashes()'来保存更改行。 – Raptor 2013-07-16 03:52:06

0

这有点旧,但我找到了,所以我想我会贡献我所学到的。

我发现如果你有一个JavaScript中的变量(从AJAX /数据库无论)双引号,你想把它放在一个字段 - 如果你建立整个领域/形式的HTML,然后交换成一个div使用innerHTML,则值中的双引号会导致问题。我正在这样做,我无法通过逃避任何方式绕过它。

您应该使用字段构建html并交换它,然后执行document.getElementById('myfieldid')。value = thevalue;相反,它工作正常。

+1

对于Javascript解决方案,这工作,并让我走出了一个堵塞。没有人提到这个线程需要在PHP中。所以我拿走你的-1。 :)谢谢你解决这个问题。否则,它会花费我整晚修复一个错误。 – Paul 2016-09-09 03:00:23

+0

谢谢:)这是一个奇怪的问题,我不能相信逃跑没有奏效。很高兴知道它有帮助,而且我不是唯一一个有这种痛苦的问题。 – mikato 2016-09-14 15:44:43

0

Personnaly我用这一招:

$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8'))); 
0

我需要申请htmlspecialcars()查询结果数组。我发现a useful solution from here(请参阅sean的评论)。

//create a cleaning function 
function _clean(&$value) { 
    $value = htmlspecialchars($value); 
    //$value = htmlspecialchars($value, ENT_QUOTES);//alternative 
} 

//fetch the data from DB somehow (sqlQ is a custom function) 
$q = "..."; 
$r = $d->sqlQ($q); 
$row = mysqli_fetch_array($r,MYSQLI_ASSOC); 

//...call the function recursively (not always necessary) to the resultset row 
array_walk_recursive($row, '_clean'); 

它做了不少不必要的工作,如果你只取几个文本列,但至少你不需要的功能htmlspecialchars()写入HTML表单多次。

6

对于UTF-8我去htmlspecialchars($value, ENT_QUOTES, "UTF-8")其中的伎俩。

stack source

相关问题