Tôi đang sử dụng regex sau để loại bỏ các ký tự điều khiển không in từ đầu vào của người dùng trước khi chèn các giá trị vào cơ sở dữ liệu.preg_replace để loại bỏ các ký tự không in dường như xóa tất cả các ký tự ngoài cũng như
preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $value)
Có vấn đề với việc sử dụng điều này trên chuỗi utf-8 không? Dường như loại bỏ tất cả các ký tự không phải là ascii hoàn toàn.
Nó có để lại các ký tự hợp lệ ngoài phạm vi ASCII, như ký tự di chuyển Ba Lan (như ąęćśńżź) không? Tôi đang tìm một biểu thức chính quy sẽ loại bỏ các chuỗi UTF-8 không hợp lệ (vì vậy MySQL sẽ không phàn nàn trong khi chèn một chuỗi như vậy vào cơ sở dữ liệu), nhưng để mọi thứ khác không bị ảnh hưởng. – pako
Tôi nghĩ rằng bạn muốn sử dụng ''/ \ P {Any}/u'' -' Any' nên tự giải thích, và '\ P {}' (chữ hoa) là dạng phủ định của '\ p {} '. Nhưng tôi muốn được quan tâm nhiều hơn đến cách những chuỗi byte không hợp lệ đã có trong đó ở nơi đầu tiên. –