2011-03-29 11 views

Respuesta

3

De pcrepattern specifications página:

Carácter genérico tipos

\s  any white space character 

Para la compatibilidad con Perl, \ s no solía coincidir con el carácter VT (código 11), lo que la diferenciaba de la clase POSIX "espacio". Sin embargo, Perl agregó VT en la versión 5.18, y PCRE hizo lo mismo en versión 8.34. Los caracteres por defecto son ahora HT (9), LF (10), VT (11), FF (12), CR (13) y espacio (32), que se definen como blanco espacio en la "C "locale" Esta lista puede variar si se lleva a cabo el emparejamiento específico del lugar. Por ejemplo, en algunas configuraciones regionales, el carácter "espacio sin interrupción" (\ xA0) se reconoce como espacio en blanco, y en otros el carácter VT no.

Así \s coincidirá con 5 personajes y mucho más en función de:

  1. versión de la biblioteca PCRE
  2. establecer

This test compara el resultado de preg_match a través de varias versiones de PHP configuración regional.

+2

También he llegado aquí buscando la lista. Pero la página ha cambiado posiblemente. Esta es la lista: Whitespace emparejado por \ T significa que sólo estos 5 personajes: 9 = 0x09 = pestaña horizontal, 10 = 0x0A = avance de línea, 12 = 0x0C = forma de alimentación, 13 = 0x0D = retorno de carro, 32 = 0x20 = espacio, http://www.php.net/manual/en/regexp.reference.escape.php –

3

PHP tiene \h sólo caracteres de espacio en blanco horizontales: http://www.php.net/manual/en/regexp.reference.escape.php

Según http://www.pcre.org/pcre.txt:

Para compatibilidad con Perl, \ s no coincide con el carácter VT (código 11). Esto lo hace diferente de la clase POSIX "espacio". Los caracteres \ son HT (9), LF (10), FF (12), CR (13) y espacio (32). Si "usa la configuración regional;" está incluido en un script de Perl, \ s puede coincidir con el carácter de VT ter. En PCRE, nunca lo hace.

Por lo tanto, si "Espacio vertical" hace referencia a la pestaña vertical, la respuesta es no.

 
The sequences \h, \H, \v, and \V are features that were added to Perl 
at release 5.10. In contrast to the other sequences, which match only 
ASCII characters by default, these always match certain high-valued 
codepoints in UTF-8 mode, whether or not PCRE_UCP is set. 

The horizontal space characters are: 

     U+0009  Horizontal tab 
     U+0020  Space 
     U+00A0  Non-break space 
     U+1680  Ogham space mark 
     U+180E  Mongolian vowel separator 
     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 

The vertical space characters are: 

     U+000A  Linefeed 
     U+000B  Vertical tab 
     U+000C  Formfeed 
     U+000D  Carriage return 
     U+0085  Next line 
     U+2028  Line separator 
     U+2029  Paragraph separator 
+0

Pero eso no dice nada si '\ s' lo incluye o no ... –

+0

Bueno, http://www.pcre.org/pcre.txt dice que no coincide con una pestaña vertical - No lo hago Sé lo que es un espacio vertical. – Kobi

+0

¿Qué son los caracteres horizontales en blanco? – Stephan

1

De http://www.pcre.org/pcre.txt:

\ s cualquier carácter que \ P {Z} coincide, además HT, LF, FF, CR

+4

Si bien se cita correctamente, esto depende de una configuración de tiempo de compilación. Y PHP usa un '#ifdef PCRE_UCP' alrededor de ese código. No se debe confiar en eso. – mario

Cuestiones relacionadas