Якщо ви шукаєте пробіл, це буде " "
(один пробіл).
Якщо ви шукаєте одну або декілька, це " *"
(це два пробіли і зірочка) або " +"
(один пробіл і плюс).
Якщо ви шукаєте для загального відстані, використання "[ X]"
або "[ X][ X]*"
або "[ X]+"
деX
є фізичний символ табуляції (і кожен передує єдиний простір у всіх цих прикладах).
Вони працюватимуть у кожному * regex двигуні, який я коли-небудь бачив (деякі з яких навіть не мають одного або більше "+"
символу, так-так).
Якщо ви знаєте, що ви будете використовувати один з більш сучасних регекс-двигунів, "\s"
і його варіанти - це шлях. Крім того, я вважаю, що межі слів також збігаються з початком та кінцем рядків, що важливо, коли ви шукаєте слова, які можуть з’являтися без попереднього чи наступного пробілів.
Спеціально для PHP ця сторінка може допомогти.
Зі свого редагування, здається, ви хочете видалити всі недійсні символи. Початок цього (відмітьте пробіл всередині регулярного виразу):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
Якщо ви також хочете хитрість, щоб переконатися, що між кожним словом і жодним пробілом на початку чи в кінці є лише один пробіл, це трохи складніше (і, можливо, інше питання), але основна ідея буде:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end