2010-08-03 42 views
4

PHP URL編碼/解碼漂亮的行情出於某種原因,從文本形式提交這樣Jack’s Spindle字符串到PHP後,我得到:整個表單域的%u2019

Jack%u2019s Spindle

這是什麼PHP的urlencode()會做,這將是Jack%92s+Spindlerawurlencode() = Jack%92s%20Spindle

因此,urldecode()和原始版本不工作解碼日在字符串...有這樣的字符串的另一個函數嗎?

-

此外,Jack’s Spindle將是HTML安全的方式來編碼以上,但urlencode()和原材料*爲產生:Jack%26%238217%3Bs+SpindleJack%26%238217%3Bs%20Spindle分別...

哪裏%u2019未來從?它代表什麼?你怎麼回到這個無辜的撇號?

+0

類似的編碼混淆出現''包圍漂亮行情'' – ina 2010-08-03 02:02:08

回答

6

那麼,只有你可以告訴我們從哪裏來。你是從哪裏得到你的文本以及正在提交哪些轉換?我承認我還沒有看到這種編碼策略。

這就是說,它與Javascript編碼UTF-16代碼單元的方式非常相似:\uXXXX其中每個X代表一個十六進制字符。將其轉換爲HTML實體,你可以這樣做:

preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string) 
+0

雷克前準確地做了這個把戲!引號是固定的... ty:D – ina 2010-08-03 02:46:51

2

preg_replace函數調用正則表達式應該有一個結束符,即:preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string)

1

我有這種問題。
當我通過JavaScript/AJAX發送變量到PHP腳本,在PHP中顯示%u2019而不是報價,等...
我解決了它這樣的:
- 在我的JavaScript腳本,發送之前encodeURIComponent(myvar)更換escape(myvar)
- 在我的php文件中,使用$myvar=utf8_decode($_POST['myvar'])

Hope thant can help。