2011-01-21 32 views
15

Tôi gặp sự cố khi thay thế dấu "+" bằng chuỗi được mã hóa url "% 2B". Tôi có thể làm cái này như thế nào?Làm cách nào để thay thế dấu cộng "+" bằng mã hóa url tương ứng của "% 2B"?

Đây là những gì tôi đã cố gắng:

text đã nhập vào hộp văn bản:

plus(+) 

Sau đó tôi urlencode chuỗi:

$string = urlencode($string); 

Chuỗi bây giờ trông giống như:

plus%28+%29 

Tôi muốn có dấu "+" urlencoded, nếu không khi tôi urldecode() dữ liệu để hiển thị trong trình duyệt của tôi kết thúc với:

plus() 

vì urldecode() giải thích dấu "+" để trở thành một không gian.

Tôi đã cố gắng sử dụng str_replace php() nhưng tôi tiếp tục nhận được một "NULL" trở lại làm giá trị cho "$ new_string":

$new_string = str_replace('+', '%2B', $string); 

Bất kỳ ý tưởng?

Cảm ơn trước!

+1

Sử dụng 'urlencode ($ string)' echos 'cộng% 28% 2B% 29' cho tôi. –

Trả lời

33

Điều đó thật lạ. Khi tôi sử dụng urlencode trên plus(+) tôi nhận được plus%28%2B%29. Hãy chắc chắn rằng bạn đang sử dụng nó một cách chính xác.

Bạn cũng có thể thử rawurlencode. Nó sẽ mã hóa khoảng trắng là %20 thay vì +.

+10

++ Từ các ý kiến ​​trong trang hướng dẫn sử dụng PHP (http://php.net/manual/en/function.urlencode.php): "Không sử dụng urlencode() hoặc urldecode() nếu văn bản bao gồm địa chỉ email Trừ khi bạn chắc chắn rằng bạn sẽ không mã hóa địa chỉ email VÀ bạn cần khả năng đọc được cung cấp bằng cách sử dụng "+" không chuẩn, thay vào đó luôn sử dụng sử dụng rawurlencode() hoặc rawurldecode(). " – John

Các vấn đề liên quan