2011-03-16 13 views
6

digamos que tengo una cadena "blbl \ nblbl etc". Sé que debería comenzar en la posición $ pos. Tengo que seleccionar todo hasta el final de la línea. No puedo usar substr ($ string, $ pos, strpos ($ string, "\ n", $ pos)), porque Mac no usa \ n como delimitador.Seleccione desde la posición hasta el final de la línea en la cadena

¿Cómo puedo hacerlo?

Gracias

+0

a continuación, utilizar \ r .... –

+0

OS X hace uso '\ n' para la nueva línea. Solo el Sistema 9 y versiones anteriores usan '\ r' en su lugar, y si realmente tiene usuarios en el Sistema 9 (o está en el Sistema 9 usted mismo), entonces tiene problemas mucho más grandes de los que preocuparse. – Charles

+0

¿Cuál es la fuente de la cadena (es decir, es proporcionada por el usuario o generada por el sistema, etc.)? – webbiedave

Respuesta

2

Pase la cadena a través de una función que reemplaza \ r \ n o \ r con \ n primero. Vale la pena hacerlo por rutina, a menos que realmente desee preservar los finales de línea específicos de la plataforma.

FWIW El uso de Mac \ n ahora de todos modos.

7

Puede probar la constante PHP_EOL:

substr($string, $pos, strpos($string, PHP_EOL, $pos)); 

contiene la secuencia de caracteres de fin de línea del sistema operativo se ejecuta el script.

1

Si necesita procesar cada línea individual en la cadena, siempre puede dividir la cadena en una matriz. Puede hacer esto usando preg_split() de una manera que identificará más que los caracteres de fin de línea de los sistemas.

$lines = preg_split("/\r\n|\n|\r/", $string); 
14

Debería ser:

substr($string, $pos, (strpos($string, PHP_EOL, $pos)) - $pos); 
Cuestiones relacionadas