Comments (6)
It's not exactly clear how to do this, without needing to be able to rewind the stream 1 byte. We'd have to know if the last character was a newline, to determine if parsing was aborted mid-line.
from csv.
Hmmm, even that is actually incorrect. Consider the following file with an fget length set to 6:
foo,"
bar"
We would incorrectly thing we are done processing the line. 😭
from csv.
Oh, man. fgetcsv actually keeps going and reads more than 6 bytes, because "the split would occur inside an enclosure".
from csv.
I do not believe that length
argument behave as you think.
The example below uses fgets
but it is the same argument/behaviour as with fgetcsv
.
The corresponding method on SplFileObject is https://www.php.net/manual/en/splfileobject.setmaxlinelen.php
$text = <<<TXT
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Duis nec sapien felis, ac sodales nisl.
Nulla vitae magna vitae purus aliquet consequat.
TXT;
$stream = tmpfile();
fwrite($stream, $text);
rewind($stream);
while (($buffer = fgets($stream, 20)) !== false) {
echo $buffer, PHP_EOL;
}
if (!feof($stream)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($stream);
will produce
Lorem ipsum dolor s
it amet, consectetu
r adipiscing elit.
Duis nec sapien fel
is, ac sodales nisl
.
Nulla vitae magna v
itae purus aliquet
consequat.
It will only split/ read the line in chunk size, it will not force ending reading the line.
from csv.
TL;DR: I do not think setting this value to anything other than 0
will help prevent DDOS attack. IMHO it should be left to the current value for maximum compatibility and to avoid enclosure issue.
from csv.
I will close this issue as a won't fix because of the argument I put forward.
from csv.
Related Issues (20)
- Any Idea why I am getting this error? Please help HOT 4
- Prevent character encoding HOT 2
- PHPStan errors with versions 9.9 and 9.10 HOT 2
- Add CSV column filtering and re-ordering during parsing
- Calls to rewind or fseek that fail are ignored silently HOT 5
- How to read from STDIN instead of a file HOT 2
- Is Writer::insertAll() faster than Writer::insertOne() or not? HOT 2
- how to read csv without BOM? HOT 4
- getRecords from PART of columns and random sort HOT 2
- getRecords with defined header produce wrong results HOT 1
- Add object mapping HOT 12
- Preformatting data before conversion HOT 3
- TabularDataReader::getRecords()->current() can return NULL HOT 3
- php version is locked to 8.1, it causes issues with php upgrade to 8.2 or greater HOT 1
- Parsing CSV with escape character before enclosure HOT 2
- Feature request: Trim parsed csv strings HOT 2
- Since 9.12.0 TabularDataReader::getRecords is stricter - exception is thrown with string keys for header HOT 10
- Enclosure not works properly HOT 2
- Is there a simple way to format xls into csv before write/read on it
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from csv.