2012-02-06 34 views

Trả lời

4

str_replace là an toàn nhị phân và UTF-8 là mã hóa sinh học, bạn có thể sử dụng str_replace, ngay cả khi chuỗi tìm kiếm hoặc thay thế chứa ký tự nhiều byte, miễn là cả ba thông số được mã hóa dưới dạng UTF-8.

Đó là lý do tại sao lúc đầu không có chức năng mb_str_replace.

Nếu mã hóa của bạn không song ánh - tức là có nhiều đại diện của cùng một chuỗi, ví dụ < trong UTF-7, có thể được thể hiện cả hai như '+ADw-''<', bạn nên chuyển đổi tất cả các chuỗi với cùng (song ánh) mã hóa, áp dụng str_replace và sau đó chuyển đổi chuỗi thành mã hóa đích.

+0

mã hóa từ tính? O_O – dynamic

+0

Vì vậy, về cơ bản với UTF-8 tôi có thể quên 'mb_str_replace'? Mà mb_ * khác tôi có thể quên xem xét 'UTF-8'? – dynamic

+0

Ví dụ: 'mb_substr_count();'? – dynamic

2

Reference for manipulating UTF-8 strings safely in PHP. Không có luật chuyên chế. Một số hàm chức năng chuỗi PHP gốc có thể hoạt động an toàn trên utf-8, một số có thể cẩn thận và một số có thể không hoạt động.

Không có mb_str_replace(). Chú ý phần "UTF-8 Chức năng an toàn": explode()str_replace() là an toàn miễn là tất cả ba đối số cho nó là các chuỗi UTF-8 hợp lệ.

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