1

重複の可能性:
PHP: 特殊文字を HTML 文字コードに変換する

DB に、特殊文字「&」を使用できる文字列列があります。

この列の値は、次のようなオプションで使用されます。

<select onChange="display()">
echo "<option value='".$products."' </option>";

追加: この後、生成される HTML は正しいです:

<option value="{"varId":"2 & 4 wheel","month":"June"}"> two and four wheel </option>

そして、それは PHP スクリプトに送信されます。$products の値が "2 & 4 wheel" の場合、PHP では "2 " しか取得できず、クエリは失敗します。

これは、HTML が特殊文字を処理できないためだとわかっていますが、この問題を回避する方法を教えてください。

4

4 に答える 4

2

htmlentitiesを使用して文字列をエンコードします。

echo "<option value='". htmlentities($products) ."' </option>";
于 2012-09-09T09:50:39.863 に答える
2

HTMLは「特殊文字」を扱うことができます。すべての言語には独自の「特殊文字」があり、すべての言語にはそれらの処理方法に関する独自の規則があります。HTML には、この目的のための HTML エンティティがあります。任意の値を HTML にエコーする前に、常に を使用して HTML エンティティ エンコードしてhtmlspecialcharsください。

このトピックの詳細については、The Great Escapism (または: What You Need To Know To Work With Text Within Text) を参照してください。


更新について:

<option value="{"varId":"2 & 4 wheel","month":"June"}"> two and four wheel </option>

それは決して正しい HTML ではありません。にはvaluecontains があり、どれが属性を囲み、どれが値の一部であるかは"完全にあいまいです。次のようにする必要があります。"value="..."

<option value="{&quot;varId&quot;:&quot;2 &amp; 4 wheel&quot;,&quot;month&quot;:&quot;June&quot;}"> two and four wheel </option>

ここで構文の強調表示の違いを見てください。そして、あなたはこれを得るでしょう:

$value = '{"varId":"2 & 4 wheel","month":"June"}';
echo '<option value="' . htmlspecialchars($value); .'"> two and four wheel </option>';
于 2012-09-09T09:50:52.403 に答える
1

&amp;あなたのDBに保存することは1つの方法です..それを変換するstr_replace('&', '&amp;', $str)か、単に次のようなものを使用しますhtmlentities()

于 2012-09-09T09:51:16.333 に答える
0

htmlentities (http://php.net/manual/en/function.htmlentities.php) を使用して、文字列を出力する前にエンコードできます。

例:

$products = htmlentities($products);
echo "<option value='".$products."' </option>";

また

echo "<option value='". htmlentities($products) ."' </option>";
于 2012-09-09T09:51:23.297 に答える