anlageCsv(['year' => (string)$year]); $csv = ob_get_clean(); $lines = explode("\n", $csv); $zeile = null; foreach ($lines as $line) { if (str_contains($line, 'TEST-CSV-INJ')) { $zeile = $line; break; } } $this->assertNotEmpty($zeile, 'Zeile mit Test-Anlage in der CSV-Ausgabe gefunden'); // fputcsv() setzt Felder mit Leerzeichen in Anführungszeichen. Die Zeile // muss daher als CSV geparst werden – ein einfaches explode(';') würde // die Quotes als Teil des Werts mitliefern. $felder = str_getcsv(rtrim((string)$zeile, "\r\n"), ';'); $bezeichnung = $felder[1] ?? ''; $this->assertEquals( "'=cmd|'/c calc'!A1", $bezeichnung, 'Führendes = in der Bezeichnung wird mit vorangestelltem \' entschärft' ); $this->assert( !str_starts_with($bezeichnung, '='), 'Bezeichnungsfeld beginnt nicht mehr mit = (kein von Excel interpretiertes Formelfeld)' ); } }