!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/   drwxr-xr-x
Free 13.39 GB of 57.97 GB (23.1%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     AddressHelper.php (5.14 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace PhpOffice\PhpSpreadsheet\Cell;

use 
PhpOffice\PhpSpreadsheet\Exception;

class 
AddressHelper
{
    
/**
     * Converts an R1C1 format cell address to an A1 format cell address.
     */
    
public static function convertToA1(
        
string $address,
        
int $currentRowNumber 1,
        
int $currentColumnNumber 1
    
): string {
        
$validityCheck preg_match('/^(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))$/i'$address$cellReference);

        if (
$validityCheck === 0) {
            throw new 
Exception('Invalid R1C1-format Cell Reference');
        }

        
$rowReference $cellReference[2];
        
//    Empty R reference is the current row
        
if ($rowReference === '') {
            
$rowReference = (string) $currentRowNumber;
        }
        
//    Bracketed R references are relative to the current row
        
if ($rowReference[0] === '[') {
            
$rowReference $currentRowNumber trim($rowReference'[]');
        }
        
$columnReference $cellReference[4];
        
//    Empty C reference is the current column
        
if ($columnReference === '') {
            
$columnReference = (string) $currentColumnNumber;
        }
        
//    Bracketed C references are relative to the current column
        
if (is_string($columnReference) && $columnReference[0] === '[') {
            
$columnReference $currentColumnNumber trim($columnReference'[]');
        }

        if (
$columnReference <= || $rowReference <= 0) {
            throw new 
Exception('Invalid R1C1-format Cell Reference, Value out of range');
        }
        
$A1CellReference Coordinate::stringFromColumnIndex($columnReference) . $rowReference;

        return 
$A1CellReference;
    }

    
/**
     * Converts a formula that uses R1C1 format cell address to an A1 format cell address.
     */
    
public static function convertFormulaToA1(
        
string $formula,
        
int $currentRowNumber 1,
        
int $currentColumnNumber 1
    
): string {
        if (
substr($formula03) == 'of:') {
            
$formula substr($formula3);
            
$temp explode('"'$formula);
            
$key false;
            foreach (
$temp as &$value) {
                
//    Only replace in alternate array entries (i.e. non-quoted blocks)
                
if ($key = !$key) {
                    
$value str_replace(['[.''.'']'], ''$value);
                }
            }
        } else {
            
//    Convert R1C1 style references to A1 style references (but only when not quoted)
            
$temp explode('"'$formula);
            
$key false;
            foreach (
$temp as &$value) {
                
//    Only replace in alternate array entries (i.e. non-quoted blocks)
                
if ($key = !$key) {
                    
preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/'$value$cellReferencesPREG_SET_ORDER PREG_OFFSET_CAPTURE);
                    
//    Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way
                    //        through the formula from left to right. Reversing means that we work right to left.through
                    //        the formula
                    
$cellReferences array_reverse($cellReferences);
                    
//    Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent,
                    //        then modify the formula to use that new reference
                    
foreach ($cellReferences as $cellReference) {
                        
$A1CellReference self::convertToA1($cellReference[0][0], $currentRowNumber$currentColumnNumber);
                        
$value substr_replace($value$A1CellReference$cellReference[0][1], strlen($cellReference[0][0]));
                    }
                }
            }
        }
        unset(
$value);
        
//    Then rebuild the formula string
        
$formula implode('"'$temp);

        return 
$formula;
    }

    
/**
     * Converts an A1 format cell address to an R1C1 format cell address.
     * If $currentRowNumber or $currentColumnNumber are provided, then the R1C1 address will be formatted as a relative address.
     */
    
public static function convertToR1C1(
        
string $address,
        ?
int $currentRowNumber null,
        ?
int $currentColumnNumber null
    
): string {
        
$validityCheck preg_match('/^\$?([A-Z]{1,3})\$?(\d{1,7})$/i'$address$cellReference);

        if (
$validityCheck === 0) {
            throw new 
Exception('Invalid A1-format Cell Reference');
        }

        
$columnId Coordinate::columnIndexFromString($cellReference[1]);
        
$rowId = (int) $cellReference[2];

        if (
$currentRowNumber !== null) {
            if (
$rowId === $currentRowNumber) {
                
$rowId '';
            } else {
                
$rowId '[' . ($rowId $currentRowNumber) . ']';
            }
        }

        if (
$currentColumnNumber !== null) {
            if (
$columnId === $currentColumnNumber) {
                
$columnId '';
            } else {
                
$columnId '[' . ($columnId $currentColumnNumber) . ']';
            }
        }

        
$R1C1Address "R{$rowId}C{$columnId}";

        return 
$R1C1Address;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0054 ]--