PHP: chuyển đổi khoảng trắng trong chuỗi thành% 20?


84

Làm cách nào để chuyển đổi khoảng trắng trong chuỗi thành %20?

Đây là nỗ lực của tôi:

$str = "What happens here?";
echo urlencode($str);

Đầu ra là "What+happens+here%3F", vì vậy các khoảng trắng không được biểu diễn bằng %20.

Tôi đang làm gì sai?

Câu trả lời:


200

Sử dụng rawurlencodechức năng thay thế.


1
Hãy cẩn thận nếu bạn sử dụng điều này cho url (không phải phần truy vấn của nó), dấu gạch chéo được chuyển đổi sẽ khiến url không hoạt động. Vì vậy, nếu bạn chỉ cần quan tâm đến khoảng trắng (có thể cho URL đó), tôi đề xuất str_replace.
Lukáš Řádek

26

Dấu cộng là mã hóa lịch sử cho một ký tự khoảng trắng trong các tham số URL, như được ghi lại trong phần trợ giúp cho urlencode()hàm.

Chính trang đó chứa câu trả lời bạn cần - rawurlencode()thay vào đó hãy sử dụng để nhận mã hóa tương thích RFC 3986 .


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.