単一引用符(such as this answer)をエスケープする他の方法がありますが、htmlspecialchars()を使用する方法があるはずです。htmlspecialchars()で単一引用符だけをエスケープします。
マニュアルによれば、その定数のいくつかの組み合わせであるべきですが、説明に基づいて私はそれを見ません。
二重引用符だけを残して、一重引用符だけをエスケープすることはできますか?htmlspecialchars()
?二重引用符があり
単一引用符(such as this answer)をエスケープする他の方法がありますが、htmlspecialchars()を使用する方法があるはずです。htmlspecialchars()で単一引用符だけをエスケープします。
マニュアルによれば、その定数のいくつかの組み合わせであるべきですが、説明に基づいて私はそれを見ません。
二重引用符だけを残して、一重引用符だけをエスケープすることはできますか?htmlspecialchars()
?二重引用符があり
使用はhtmlspecialchars(...)
str_replace(...)。
あるいは、ENT_QUOTES
htmlspecialchars($string, ENT_QUOTES);
を使用ここでは、あなたが探している定数の組み合わせがあります。
$escaped_string = htmlspecialchars($string, ENT_QUOTES & ~ENT_COMPAT, $encoding);
これは& ' < >
を逃れ、それだけで"
を残します。 ENT_QUOTES & ~ENT_COMPAT
は、 "の両方の引用符を除いた二重引用符を除いたビット操作言語"です。
これらの定数がどのように定義されているかが原因です。 php-src/ext/standard/html.h
#define ENT_HTML_QUOTE_NONE 0
#define ENT_HTML_QUOTE_SINGLE 1
#define ENT_HTML_QUOTE_DOUBLE 2
#define ENT_COMPAT ENT_HTML_QUOTE_DOUBLE
#define ENT_QUOTES (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE)
#define ENT_NOQUOTES ENT_HTML_QUOTE_NONE
なぜあなたは今までに単一引用符をエスケープしたいではなく、二重引用符?さて、二重引用符をエスケープする理由の逆は、一重引用符ではありません。"
二重引用符が多く、一重引用符が'
個の文字列があるため、 '
-delimited string。
例:それは単一引用符で区切られた属性で結果を貼り付け、およびエスケープされていない二重引用符を残すために理にかなっているように、
<div data-myobject='<?= htmlspecialchars(json_encode($myobject), ENT_QUOTES & ~ENT_COMPAT, 'UTF-8') ?>'
json_encode()
は、二重引用符の多くを作成します。
なぜこれが必要ですか?それは私にとっては問題のようです。 – Halcyon
単引用符の場合はstr_replaceを使用してください –
[This](http://www.php.net/manual/en/function.htmlspecialchars.php#99185)は役に立ちます –