Se stai cercando uno spazio, sarebbe " "(uno spazio).
Se stai cercando uno o più, è " *"(ovvero due spazi e un asterisco) o " +"(uno spazio e un plus).
Se stai cercando una spaziatura comune, usa "[ X]"o "[ X][ X]*"o "[ X]+"dove si Xtrova il carattere della scheda fisica (e ciascuno è preceduto da un singolo spazio in tutti quegli esempi).
Funzioneranno in tutti i * motori regex che abbia mai visto (alcuni dei quali non hanno nemmeno l'uno o più "+"personaggi, ugh).
Se sai che utilizzerai uno dei motori regex più moderni "\s"e le sue varianti sono la strada da percorrere. Inoltre, credo che i confini delle parole corrispondano anche all'inizio e alla fine delle righe, importante quando cerchi parole che potrebbero apparire senza spazi precedenti o seguenti.
In particolare per PHP, questa pagina può essere d'aiuto.
Dalla tua modifica, sembra che tu voglia rimuovere tutti i caratteri non validi L'inizio di questo è (nota lo spazio all'interno della regex):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
Se vuoi anche dei trucchi per assicurarti che ci sia solo uno spazio tra ogni parola e nessuna all'inizio o alla fine, è un po 'più complicato (e probabilmente un'altra domanda) ma l'idea di base sarebbe:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end