2010-03-23 67 views
8

Tôi muốn xóa tất cả các ký tự không phải chữ và số và dấu cách khỏi một chuỗi. Vì vậy, tôi muốn không gian còn lại. Những gì tôi đặt cho một không gian trong hàm dưới trong dấu ngoặc []:Làm thế nào để loại bỏ tất cả các ký tự không phải chữ số và không gian từ một chuỗi trong PHP?

ereg_replace("[^A-Za-z0-9]", "", $title); 

Nói cách khác, những gì biểu tượng đại diện cho không gian, tôi biết \ n đại diện cho một dòng sản phẩm mới, là có bất kỳ biểu tượng như vậy cho một đơn không gian.

Trả lời

25

Chỉ cần đặt một không gian giản dị thành lớp nhân vật của bạn:

[^A-Za-z0-9 ] 

Đối với ký tự khoảng trắng khác (bộ phận của máy đánh chữ, ngắt dòng, vv) sử dụng \s để thay thế.

Bạn cũng nên lưu ý rằng PHP’s POSIX ERE regular expression functions không còn được dùng nữa và sẽ bị xóa trong PHP 6 có lợi cho số PCRE regular expression functions. Vì vậy, tôi khuyên bạn nên sử dụng preg_replace thay vì:.

preg_replace("/[^A-Za-z0-9 ]/", "", $title) 
+0

câu trả lời Really nice. – Franz

+0

Tôi nhận xét đơn giản chỉ cần nói Đạo cụ để đăng một ví dụ phù hợp. Câu trả lời được kiểm tra màu xanh lá cây ở trên là không chính xác về mặt kỹ thuật. Nó phải là: $ title = preg_replace ("/ [^ A-Za-z0-9] /", "", $ title) thay vì chỉ: preg_replace ("/ [^ A-Za-z0-9] /" , "", $ title) làm rõ rằng phương thức không thay thế biến đó. –

2

Nếu bạn muốn chỉ là một không gian đen, hãy đặt một trong nhóm cho 'nhân vật khoảng trắng' như tab và newlines là \ s

1

Câu trả lời được chấp nhận không không xóa không gian.

Hãy xem xét những điều sau

$string = 'tD 13827$2099'; 
$string = preg_replace("/[^A-Za-z0-9 ]/", "", $string); 

echo $string; 

> tD 138272099 

Bây giờ nếu chúng ta str_replace không gian, chúng tôi nhận được kết quả mong muốn

$string = 'tD 13827$2099'; 
$string = preg_replace("/[^A-Za-z0-9 ]/", "", $string); 

// remove the spaces 
$string = str_replace(" ", "", $string); 

echo $string; 

> tD138272099 
+4

Điều này đúng. Tôi phải thiếu một cái gì đó vì có một câu trả lời được chấp nhận. Tôi đang sử dụng 'preg_replace ('/ [\ s \ W] + /'' và nó hoạt động giống như một sự quyến rũ - loại bỏ các chữ số và không phải chữ số. – Chords

+0

Tôi biết điều này là cũ, nhưng tác giả không muốn xóa "Làm thế nào để loại bỏ tất cả các ký tự không phải chữ và số và không gian từ một chuỗi trong PHP?" "Tôi đặt gì cho một khoảng trống trong hàm bên dưới trong dấu ngoặc []:" và đáng chú ý nhất : "Vì vậy, tôi muốn không gian còn lại" Chỉ còn thiếu "không" trong dòng đầu tiên của văn bản. – travisnewman

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