やってみよう:
encodeURIComponent("'@#$%^&");
これを試してみると、一重引用符を除いてすべての特殊文字がエンコードされていることがわかります。すべての文字をエンコードし、PHPを使用してそれらをデコードするために使用できる関数は何ですか?
ありがとう。
やってみよう:
encodeURIComponent("'@#$%^&");
これを試してみると、一重引用符を除いてすべての特殊文字がエンコードされていることがわかります。すべての文字をエンコードし、PHPを使用してそれらをデコードするために使用できる関数は何ですか?
ありがとう。
なぜそれらをエンコードしたいのかわかりません。一重引用符のみをエスケープする場合は、を使用できます.replace(/'/g, "%27")
。ただし、適切なリファレンスは次のとおりです。
次を使用できます。
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, escape);
}
fixedEncodeURIComponent("'@#$%^&");
参照を確認してください:http://mdn.beonex.com/en/JavaScript/Reference/Global_Objects/encodeURIComponent.html
btoa()
とを使用できますatob()
。これは、一重引用符を含む指定された文字列をエンコードおよびデコードします。
試してみencodeURI()
てencodeURIComponent()
ください...
console.log(encodeURIComponent('@#$%^&*'));
入力:@#$%^&*
。出力:%40%23%24%25%5E%26*
。それで、待って、何が起こったの*
ですか?なぜこれが変換されなかったのですか?TLDR:あなたは実際に欲しいfixedEncodeURIComponent()
とfixedEncodeURI()
。長い話...
encodeURIComponent()
:使用しないでください。MDNドキュメントfixedEncodeURIComponent()
で定義および説明されているように、を使用してください。encodeURIComponent()
RFC 3986(!、'、(、)、および*を予約)をより厳密に順守するために、これらの文字には形式化されたURI区切りの使用法がありませんが、以下を安全に使用できます。
function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); }
このトピックについて話している間は、も使用しないでくださいencodeURI()
。MDNencodeURI()
ドキュメントで定義されているように、MDNにも独自の書き直しがあります。彼らの説明を引用するには...
URLの最新のRFC3986に従いたい場合は、角かっこを予約して(IPv6の場合)、URLの一部となる可能性のあるもの(ホストなど)を形成するときにエンコードされないようにする場合は、次のコードスニペットが役立ちます。
function fixedEncodeURI(str) { return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']'); }
キャラクターを見逃すことのない巧妙なトリックを見つけました。私はそれを何も除いてすべてを置き換えるように言います。私はこのようにします(URLエンコード):
function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}
function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}
loader.value = encode(document.body.innerHTML);
<textarea id=loader rows=11 cols=55>www.WHAK.com</textarea>
@Bergiが書いたように、すべての文字を置き換えることができます。
function encoePicture(pictureUrl)
{
var map=
{
'&': '%26',
'<': '%3c',
'>': '%3e',
'"': '%22',
"'": '%27'
};
var encodedPic = encodeURI(pictureUrl);
var result = encodedPic.replace(/[&<>"']/g, function(m) { return map[m];});
return result;
}
最近の回答(2021)
JavaScriptの使用URLSearchParams
:
console.log(new URLSearchParams({ encoded: "'@#$%^&" }).toString())