Nếu bạn đang tìm kiếm một không gian, đó sẽ là " "
(một không gian).
Nếu bạn đang tìm kiếm một hoặc nhiều, thì đó là " *"
(đó là hai dấu cách và dấu hoa thị) hoặc" +"
(một cộng).
Nếu bạn đang tìm kiếm khoảng cách chung, sử dụng "[ X]"
hoặc "[ X][ X]*"
hoặc "[ X]+"
ở đâuX
là ký tự tab vật lý (và từng được đi trước bởi một không gian duy nhất trong tất cả những ví dụ).
Chúng sẽ hoạt động trong mọi công cụ * regex mà tôi từng thấy (một số trong số đó thậm chí không có một hoặc nhiều hơn"+"
ký tự , ugh).
Nếu bạn biết bạn sẽ sử dụng một trong những công cụ regex hiện đại hơn, "\s"
và các biến thể của nó là hướng đi. Ngoài ra, tôi tin rằng ranh giới từ cũng khớp với bắt đầu và kết thúc của dòng, quan trọng khi bạn đang tìm kiếm các từ có thể xuất hiện mà không có trước hoặc sau khoảng trắng.
Đối với PHP cụ thể, trang này có thể giúp đỡ.
Từ chỉnh sửa của bạn, có vẻ như bạn muốn xóa tất cả các ký tự không hợp lệ Bắt đầu điều này là (lưu ý khoảng trắng bên trong biểu thức chính quy):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
Nếu bạn cũng muốn có mánh khóe để đảm bảo chỉ có một khoảng trống giữa mỗi từ và không có từ nào ở đầu hoặc cuối, thì điều đó phức tạp hơn một chút (và có thể là một câu hỏi khác) nhưng ý tưởng cơ bản sẽ là:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end