Câu trả lời:
$name = str_replace(' ', '_', $name);
Như những người khác đã giải thích cách sử dụng nó str_replace
, bạn cũng có thể sử dụng regex để đạt được điều này.
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
Gọi http://php.net/str numplace :$input = str_replace(' ', '_', $input);
Sử dụng str numplace :
str_replace(" ","_","Alex Newton");
Bạn cũng có thể làm điều này để ngăn các từ bắt đầu hoặc kết thúc bằng dấu gạch dưới như _words_more_words_, Điều này sẽ tránh bắt đầu và kết thúc bằng khoảng trắng.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
Đây là một phần trong mã của tôi, tạo khoảng trắng thành dấu gạch dưới để đặt tên tệp của tôi:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
Strtr
thay thế các ký tự đơn thay vì các chuỗi, vì vậy đây là một giải pháp tốt cho ví dụ này. Được cho strtr
là nhanh hơn str_replace
(nhưng đối với trường hợp sử dụng này, cả hai đều nhanh vô cùng).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace
- đó là giải pháp rõ ràng. Nhưng đôi khi bạn cần biết chính xác những gì có không gian. Tôi có một vấn đề với không gian từ tập tin csv.
Có hai ký tự nhưng một trong số đó là 0160 (0x0A0) và số khác là vô hình (0x0C2)
giải pháp cuối cùng của tôi:
$str = preg_replace('/\xC2\xA0+/', '', $str);
Tôi đã tìm thấy biểu tượng vô hình từ trình xem HEX từ mc (trình xem nửa đêm - F3 - F9)
'/\s+/'
?