php 包含双引号值的输入字段

i5desfxk  于 2023-02-03  发布在  PHP
关注(0)|答案(9)|浏览(154)

在我的PHP项目中,我有一个包含特殊字符的值,比如“,”等(“5“英寸,”3.5“英寸等),但是它没有出现在文本字段中,我该如何显示它呢?
是否可以在文本框中显示此值?

zf2sa74q

zf2sa74q1#

使用htmlentities

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

nmpmafwu2#

我想您的“文本框”是一个HTML <input>元素吧?
如果是这样,您将使用如下方式显示它:

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

如果是这种情况,您需要使用htmlspecialchars对变量中包含的HTML进行转义:

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

请注意,您可能需要添加几个参数,特别是指定您正在使用的编码。
这样,考虑到$yourValue已经被初始化为:

$yourValue = '5 " inches';

您将从生成的HTML中获得:

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

到了那个,效果更好:

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

wsxa1bj13#

对于UTF-8,我选择了htmlspecialchars($value, ENT_QUOTES, "UTF-8"),这就成功了。
stack source

rfbsl7qr

rfbsl7qr4#

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

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

PS:这在某人提交表单之后很有用,但是当输入没有被验证的时候。

2ic8powd

2ic8powd5#

我发现如果你在JavaScript中的变量中有双引号(来自 AJAX /数据库),而你想把它放在一个字段中--如果你构建整个字段/表单HTML内容,然后使用innerHTML将其交换到一个div中,值中的双引号会引起问题。我正在这样做,但我也找不到一个通过转义来绕过它的方法。
您应该先用字段构建HTML内容并将其交换进来,然后执行文档。getElementById('myfieldid').value = thevalue;相反,它工作得很好。

nzkunb0c

nzkunb0c6#

我需要将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');

如果只获取几个文本列,那么它会做很多不必要的工作,但至少不需要多次向HTML表单写入htmlspecialchars()函数。

ttygqcqt

ttygqcqt7#

试试这个

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

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

祝你好运;)

vyu0f0g1

vyu0f0g18#

就我个人而言,我使用这个技巧:

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

sigwle7e9#

看起来在HTML输入中管理单引号和双引号(以及其他特殊字符)的最好方法是通过文本区域字段来模拟它。所以只需要创建一个文本区域而不是输入字段,并给予一些样式来使它看起来像一个本地输入。

<textarea class="fake-input"> quote's and other quote"s </textarea>
<style>
.fake-input {
    height: 20px; /* based on your font-size */
    resize: none;
    overflow: hidden;
    white-space: nowrap;
    width: /* your input width */
}
</style>

相关问题