2016-10-24 5 views
-1

Lorsque je tente de supprimer plusieurs espaces d'une chaîne en utilisant ce codepreg_replace supprime également les sauts de ligne lorsque les espaces que l'on demande à supprimer

preg_replace('/\s{2,}/', ' ', $data)
Je remarque que sont également supprimés des sauts de ligne.

Lorsque j'utilise un caractère espace dans la syntaxe au lieu d'un \ s, tout fonctionne normalement.

Alors je me demande pourquoi avons-nous ce comportement et qu'est-ce qui se passe?

+2

Rechercher sur ce que 's 'signifie exactement. Essayez d'utiliser '\ h' à la place. –

+0

\ s est généralement un espace, une tabulation et un retour à la ligne, donc c'est le bon résultat. –

+2

Possible duplicate of [Référence - Que signifie cette regex?] (Http://stackoverflow.com/questions/22937618/reference-what-does-this -regex-mean) –

Répondre

1

\s correspond à un caractère d'espace. De PCRE:

Les caractères par défaut \ s sont HT (9), LF (10), VT (11), FF (12), CR (13), et l'espace (32), qui sont définis en tant qu'espace blanc dans les paramètres régionaux "C" .

Emphasis mine.