4

何らかの理由で、このような文字列をJack’s Spindleテキストフォームからphpに送信すると、次のようになります。

Jack%u2019s Spindle

これはPHPが行うことではなく、 または=urlencode()Jack%92s+Spindlerawurlencode()Jack%92s%20Spindle

したがって、urldecode()生のバージョンはその文字列をデコードするために機能しません...そのような文字列のための別の関数はありますか?

-

また、Jack’s Spindle上記をエンコードするHTMLセーフな方法ですが、urlencode()そのためのraw*はそれぞれ次のようJack%26%238217%3Bs+SpindleになりJack%26%238217%3Bs%20Spindleます。

どこ%u2019から来たの?それは何を表していますか?どうすればその無害なアポストロフィに戻すことができますか?

4

3 に答える 3

7

ええと、それがどこから来たのかを私たちに伝えることができるのはあなただけです。あなたはあなたのテキストを手に入れていますか、そしてそれはどの変換に提出されていますか?私はそのエンコーディング戦略をまだ見たことがないことを告白します。

とはいえ、JavascriptがUTF-16コードユニットをエンコードする方法と非常によく似ています。\uXXXXそれぞれXが16進文字を表します。HTMLエンティティに変換するには、次のようにします。

preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string)
于 2010-08-03T02:21:31.067 に答える
3

関数呼び出しの正規表現にはpreg_replace、終了区切り文字が必要です。つまり、次のようになりpreg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string)ます。

于 2011-09-05T12:10:52.723 に答える
1

私はこの種の問題を抱えていました。
javascript / ajaxを介して変数をphpスクリプトに送信すると、phpは引用符などではなく%u2019を表示していました...
これを次のように解決しました: -javascriptスクリプトで、送信前
に置き換えます-php ファイルでescape(myvar)encodeURIComponent(myvar)
$myvar=utf8_decode($_POST['myvar'])

お役に立てば幸いです。

于 2012-11-05T17:13:45.047 に答える