因此,當我在以下字符串上使用 PHP 的urlencode時,似乎出現了一個技術性問題,我認為這是一個保留的 PHP 單詞“ ? ”。原始字符串:cancel_url=https://example.com/payment_cancelled¬ify_url=https://example.com/order_notify我使用 urlencode 得到以下結果:cancel_url=https%3A%2F%2Fexample.com%2Fpayment_cancelled?ify_url=https%3A%2F%2Fexample.com%2Forder_notify正如您在上面注意到的,它創建的 '?' 特殊字符(就在單詞 'cancelled' 之后)。所以對我來說,“?ify_url”的“?”部分似乎是一個運算符保留的運算符字(PHP 中的“?”?)。我在 url 編碼后嘗試了 PHP 的 str_replace 函數,如下所示:$paramUrlString = str_replace('?', '¬', $paramUrlString);$paramUrlString = str_replace('ª', '¬', $paramUrlString);(也嘗試使用該特殊字符的 ASCII 碼)我現在已經沒有想法了。請幫忙,謝謝。
2 回答

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
urlencode 通常根本不替換¬
,但會替換&
為%26
. 請參閱此處的示例:http: //sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52
您可以嘗試在 urlencode 之前替換&
為。%26
$urlString = str_replace('&', '%26', $urlString);

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
并不是 PHP 中的任何東西都用 替換字符串¬
,?
而是您用來查看/顯示數據的任何東西都在這樣做。
鑒于;
不需要關閉實體,我敢打賭您將 URL 放入 XML 中而沒有正確轉義實體。雖然&
是在 URL 和 XML 之間發生沖突的實體,但不止于此。
最簡單的解決方案是,如果您在需要調用的 XML 文檔中嵌入原始字符串:
$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);
另一方面,最好的解決方案是根本不手動創建 XML 文檔。使用DOMDocument或XMLWriter 之類的庫。這不僅處理數據的轉義/編碼,還處理創建適當 XML 文檔的所有其他微妙復雜性。
- 2 回答
- 0 關注
- 209 瀏覽
添加回答
舉報
0/150
提交
取消