Req #41315 [Opn]: file() should support FILE_SKIP_EMPTY_LINES without FILE_IGNORE_NEW_LINES

From: Date: Wed, 22 Jun 2016 18:00:11 +0000
Subject: Req #41315 [Opn]: file() should support FILE_SKIP_EMPTY_LINES without FILE_IGNORE_NEW_LINES
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-201801@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=41315&edit=1 ID: 41315 Updated by: cmb@php.net Reported by: cschneid at cschneid dot com Summary: file() should support FILE_SKIP_EMPTY_LINES without FILE_IGNORE_NEW_LINES Status: Open Type: Feature/Change Request -Package: Feature/Change Request +Package: *General Issues PHP Version: 5.2.2 Block user comment: N Private report: N New Comment: JFTR: the PR had been closed in the meantime without having been merged. Previous Comments: ------------------------------------------------------------------------ [2012-05-10 19:43:57] theanomaly dot is at gmail dot com The reason FILE_SKIP_EMPTY_LINES doesn't skip any lines without using it in combination with FILE_IGNORE_NEW_LINES is because to PHP the lines still aren't empty until they amount to a 0 length string. With the EOL character (or characters in the case of CRLF) still a part of the string the lines will remain a part of the returned array from file(). However, since this technically doesn't break any BC (given that the FILE_SKIP_EMPTY_LINES flag doesn't do anything without FILE_IGNORE_NEW_LINES) I don't see why it would be a bad idea to support this when the only thing remaining on the line is the EOL. I've offered to submit this as a feature request instead and will also submit a patch for the documentation to clarify this behavior. https://github.com/php/php-src/pull/80 ------------------------------------------------------------------------ [2007-05-07 16:19:48] cschneid at cschneid dot com Description: ------------ Currently file() only skips (FILE_SKIP_EMPTY_LINES) when also using FILE_IGNORE_NEW_LINES at the same time. I think it would be preferable if it would work without that flag too, ignoring lines only consisting of a newline. Patch diff -u -r1.409.2.6.2.17 file.c --- ext/standard/file.c 23 Feb 2007 16:22:20 -0000 1.409.2.6.2.17 +++ ext/standard/file.c 7 May 2007 16:17:27 -0000 @@ -750,6 +750,10 @@ do { p++; parse_eol: + if (skip_blank_lines && (p-s == 1) && (*s == eol_marker)) { + s = p; + continue; + } if (PG(magic_quotes_runtime)) { /* s is in target_buf which is freed at the end of the function */ slashed = php_addslashes(s, (p-s), &len, 0 TSRMLS_CC); Reproduce code: --------------- Input file x: a b Code: var_dump(file("x", FILE_SKIP_EMPTY_LINES)); Expected result: ---------------- a b Actual result: -------------- a b ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=41315&edit=1

« previous php.bugs (#201801) next »