2010-01-30 36 views
6

Tôi muốn xóa tên tệp của tất cả các tệp đã tải lên. Tôi muốn xóa tất cả các ký tự ngoại trừ dấu chấm, chữ cái và số. Tôi không giỏi với regex nên tôi nghĩ tôi sẽ hỏi ở đây. Ai đó có thể chỉ cho tôi một trang web hữu ích hoặc chỉ cho tôi cách kết hợp điều này với nhau không? Tôi đang sử dụng PHP.Regex để khớp tất cả các ký tự ngoại trừ chữ cái và số

+1

Nó phụ thuộc vào ý bạn là gì etters. Các giải pháp được đề xuất (cho đến bây giờ) chỉ loại trừ 'a-z' và' A-Z' nhưng tất cả sẽ khớp với các chữ cái nằm ngoài phạm vi này như 'é', v.v. –

Trả lời

8
$newfilename=preg_replace('/[^a-zA-Z0-9.]/','',$filename); 
+0

Cảm ơn. Điều này làm việc. Tôi cũng quên thêm một gạch dưới. Điều này làm việc nhưng nó tối ưu? [^ A-zA-Z0-9. | _] – Timay

+2

@Timay : Nếu bạn muốn khớp với dấu gạch dưới, hãy sử dụng '[^ a-zA-Z0-9 ._]' hoặc đơn giản hơn, '[^. \ W]'. – kennytm

+0

Chà .. Chỉ 4 ký tự đó sẽ khớp với mọi thứ trừ số , thư? – Timay

1
s/[^.a-zA-Z\d]//g 

(Đây là một biểu thức Perl làm thế nào để sử dụng RegExp Trong PHP bạn làm:.

$output = preg_replace('/[^.a-zA-Z\d]/', '', $input); 
+0

Cảm ơn Kenny. Điều này cũng sẽ phù hợp với thời gian? – Timay

+0

@Timay: '^' có nghĩa là "bất kỳ ký tự nào ngoại trừ". '.a-zA-Z \ d' sau đó có nghĩa là" dấu chấm, chữ và số ". Vì vậy, nó sẽ phù hợp với tất cả các ký tự không phải là dấu chấm, chữ cái và số, sau đó loại bỏ chúng. – kennytm

+0

Cảm ơn bạn Kenny. Tôi sẽ cắm cái này vào lúc này. – Timay

0

Cố gắng sử dụng này:

$cleanString = preg_replace('#\W#', '', $string); 

Nó sẽ loại bỏ tất cả trừ các chữ cái và số.

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