2017-07-24 3 views
0

Ich möchte alle Arten von Leerzeichen durch einen Unterstrich ersetzen.Was sind alle Arten von White-Space-Varianten?

Aber mein Problem ist, dass es viele Arten von Leerzeichen gibt. gefunden Bis jetzt ist:

  1. non-breaking Raum
  2. en Raum
  3. Geviert
  4. dünnen Raum

I

preg_replace("/\p{Z}/", "_", $text); 

verwende ich eine wollen Liste aller Arten von Leerzeichen.

Antwort

4

können Sie

verwenden
preg_replace("/\s/u", "_", $text); 

Der u Modifikator wird \s Unicode bewusst und es wird keine Unicode Leerzeichen Zeichen machen lassen.

Hier ist ein Test auf einem U+0020U+00A0U+1680U+2000U+2001U+2002U+2003U+2004U+2005U+2006U+2007U+2008U+2009U+200AU+202FU+205FU+3000U+2028U+2029TextU+000B\r\n\t string:

$text = "                 
 
 Text\x0B\r\n\t"; 
$res = preg_replace("/\s/u", "_", $text); 
echo $res; // => ___________________Text____ 

anzeigen PHP demo

U+0020 SPACE 
U+00A0 NO-BREAK SPACE 
U+1680 OGHAM SPACE MARK 
U+2000 EN QUAD 
U+2001 EM QUAD 
U+2002 EN SPACE 
U+2003 EM SPACE 
U+2004 THREE-PER-EM SPACE 
U+2005 FOUR-PER-EM SPACE 
U+2006 SIX-PER-EM SPACE 
U+2007 FIGURE SPACE 
U+2008 PUNCTUATION SPACE 
U+2009 THIN SPACE 
U+200A HAIR SPACE 
U+202F NARROW NO-BREAK SPACE 
U+205F MEDIUM MATHEMATICAL SPACE 
U+3000 IDEOGRAPHIC SPACE 
U+2028 LINE SEPARATOR 
U+2029 PARAGRAPH SEPARATOR 
U+000A LINE FEED 
U+000B LINE TABULATION 
U+000D CARRIAGE RETURN (CR) 
U+0009 CHARACTER TABULATION 
+1

Danke, @Wiktor Stribiżew für eine schnelle und genaue Antwort! – Prabhav

Verwandte Themen