2011-06-21 59 views
106

Tôi có một Script PHP mà người dùng sẽ nhập một cái tên như: Alex_Newton,Spaces Thay thế bằng dấu gạch

Tuy nhiên, một số người dùng sẽ sử dụng một không gian chứ không phải là một dấu gạch dưới, vì vậy câu hỏi của tôi là:

thế nào Tôi tự động thay thế dấu cách bằng dấu gạch dưới trong PHP?

+2

Nếu {ai đó đăng câu này bây giờ lên SO} (chết (câu hỏi này quá hẹp); // bỏ phiếu và đóng.} SO nazis đã tiếp quản, dường như họ đã quên rằng những gì không #= Câu trả lời hữu ích, – Gamemorize

Trả lời

287
$name = str_replace(' ', '_', $name); 
+0

Cảm ơn bạn rất nhiều! nó hoạt động <3 – alex

+0

Cảm ơn rất nhiều :) – Hitesh

10

Sử dụng chức năng str_replace của PHP.

Cái gì như:

$str = str_replace(' ', '_', $str); 
1

Đây là một phần của mã của tôi mà làm cho không gian vào dấu gạch dưới để đặt tên tập tin của tôi:

$file = basename($_FILES['upload']['name']); 
$file = str_replace(' ','_',$file); 
44

Tính đến người khác đã giải thích làm thế nào để làm điều đó bằng str_replace, bạn cũng có thể sử dụng regex để đạt được điều này.

$name = preg_replace('/\s+/', '_', $name); 
+8

Đây là giải pháp tốt hơn theo nghĩa là nó thay thế nhiều dấu cách bằng một dấu gạch dưới thường là đầu ra mong muốn. – frostymarvelous

+4

Ngoài ra các tab và bất cứ điều gì – Loupax

+1

Tôi nghĩ là giải pháp tốt nhất !! Cảm ơn bạn... –

3

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); 
1

Tôi đã từng như thế này

$option = trim($option); 
$option = str_replace(' ', '_', $option); 
0

Strtr thay thế nhân vật duy nhất thay vì chuỗi, vì vậy đó là một giải pháp tốt cho ví dụ này. Giả sử strtr nhanh hơn str_replace (nhưng đối với trường hợp sử dụng này, chúng đều cực kỳ nhanh).

echo strtr('Alex Newton',' ','_'); 
//outputs: Alex_Newton 
Các vấn đề liên quan