2011-12-19 26 views
12

Chức năng explode() có chức năng đa tạp an toàn tương ứng trong mb_split().PHP: là hàm implode() có an toàn đối với các chuỗi nhiều byte không?

Tôi không thấy hàm tương quan cho implode(). Điều này ngụ ý rằng implode đã được an toàn cho các chuỗi multibyte?

+0

Tôi đang gặp một thời gian khó khăn để hiểu lý do tại sao cần phải có một multibyte an toàn 'chia() 'ở vị trí đầu tiên - tách một chuỗi là an toàn nhiều byte theo mặc định, không? Nhưng đó là một câu hỏi khác. –

+0

PHP lưu trữ tất cả các chuỗi (AFAIK) dưới dạng chuỗi byte nhị phân nguyên, do đó, về mặt lý thuyết, có thể sử dụng 'explode()' với chuỗi nhiều byte, miễn là bạn truyền đúng biểu diễn nhị phân của mã thông báo phân tách. Tương tự như vậy áp dụng cho 'implode()' - trình tự nhị phân được truyền khi dấu phân cách kết nối sẽ được sử dụng theo nghĩa đen, miễn là dấu phân cách của bạn được lưu trữ đúng cách, sẽ không có vấn đề gì. – DaveRandom

+1

@DaveRandom: không phải là nó có thể là một nhân vật nhiều byte có thể trông giống như hai ký tự một byte? Nếu một trong những ký tự một byte đó xảy ra là dấu phân tách, có phải bạn có thể sẽ bị phân tách một cách vô ý không? –

Trả lời

6

Miễn là dấu phân cách của bạn và các chuỗi trong mảng chỉ chứa các chuỗi đa byte được định dạng tốt thì không có bất kỳ vấn đề nào.

implode về cơ bản là một nhà điều hành nối ưa thích và tôi không thể tưởng tượng một kịch bản mà nối không an toàn multibyte;)

+2

Tôi không hoàn toàn chắc chắn những gì bạn có ý nghĩa của "trình tự multibyte hình thành tốt" trong bối cảnh này? (Tôi đồng ý với phần còn lại, mặc dù) –

+0

Cảm ơn. Tôi đang sử dụng một không gian như một dấu phân tách: 'mb_split ('', $ mbstring)'. Điều này có tạo thành một chuỗi nhiều byte được hình thành tốt không? –

+0

@danielfaraday nó phụ thuộc nếu tập lệnh của bạn được lưu trữ trong bộ ký tự nhiều byte mà chuỗi của bạn sử dụng. Nếu không, thì không phải vậy. – DaveRandom

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