2

私の質問はこの質問に似ていますが、コードイグナイターを使用していません。データベースから取得した変数をテキスト入力の値属性にエコーしています。変数には、' または " またはその他の特殊文字を含めることができます。

私は試した:

<input type="text" name="myTextInput" value="<?= htmlspecialchars($dbValue, ENT_QUOTES); ?>" />

&quot;しかし、それは私が望むものではないか、またはそうではない引用符を出力します&#039;。テキスト入力に、ユーザーが入力した引用符を実際に含める必要があります。

文字列をエスケープするには、php 関数または javascript 関数を使用する必要がありますか? $dbValue 文字列内の引用符が値属性の引用符と相互作用しているため、エスケープしないと JavaScript エラーが発生します。

4

4 に答える 4

5

ただし、それはまさにあなたが望んでいることです。例えば

挿入されたデータが

Davy "Dead Pirate" Jones

それを文字通り入力フィールドに挿入すると、最終的には次のようになります

<input type="text" name="..." value="Davy "Dead Pirate" Jones" />

これは次のように解釈されます。

<input> field with attributes:
    text -> 'text'
    name -> '...'
    value -> ' '   (a single space)
    Dead -> 
    Pirate ->
    " ?   danging quote
    Jones ->
    " ? -> another dangling quote

比較すると、html_entities を実行すると、次のようになります。

 Davy &quot;Dead Pirate&quot; Jones

<input>問題なくフィールドに挿入できます。

入力フィールドの値に&quot;、ユーザーに表示されるリテラルが含まれている場合は、二重エンコーディングが行われています。

于 2012-07-12T19:05:16.767 に答える
4

を使用したいと思うでしょうhtml_entity_decode。ドキュメントの例を次に示します。

<?php
$orig = "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now
?>

参考http ://www.php.net/manual/en/function.html-entity-decode.php

于 2012-07-12T19:01:07.913 に答える
2

htmlspecialchars の反対を探している場合は、html_entity_decode を使用してみてください。

を使用したコードは次のとおりですhtml_entity_decode

<input type="text" name="myTextInput" value="<?= html_entity_decode($dbValue, ENT_QUOTES); ?>" />

ここにマニュアルへのリンクがあります - > http://www.php.net/manual/en/function.html-entity-decode.php

これを使用して問題が発生した場合は、一般的なエンコーディングの問題があるこの質問を確認してください - > https://stackoverflow.com/a/4638621/1065786

于 2012-07-12T19:02:22.893 に答える
0

一重引用符、二重引用符、html タグをテキスト フィールド値として表示するには、以下を使用してみてください。

<?php
$formVal = htmlspecialchars($dbValue, ENT_COMPAT, 'utf-8');
// or this:
// $formVal = htmlspecialchars($dbValue);
?>

<!-- html -->
<form>
<input type="text" name="myTextInput" value="<?php echo $formVal; ?>" />
</form>

http://www.sitepoint.com/form-validation-with-php
https://www.inanimatt.com/php-output-escaping.html

于 2014-06-27T15:31:57.613 に答える