Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Conversione script...

  1. #1

    Conversione script...

    Qualcuno mi può aiutare a convertire questo script da perl a php??
    grazie 1000

    codice:
    #!/usr/bin/perl
    
    #
    # Simple program that uses sub EAN13
    # It reads standard input for codes and output
    # the encoded string.
    #
    
    
    while ( !eof(STDIN) ) {
        $r = <STDIN>;
    
        $X = EAN13($r);
    
        if ( $X != -1 ) {
            print "$X\n";
        }
        else { print " \n"; }
    
    }
    
    sub EAN13 {
    
    #
    # Returns the string that encodes the first argument of the function
    # (or -1 if something goes wrong)
    # in order to be rendered using ean13.ttf , the GPL font from http://grandzebu.net/
    # It accepts 12 or 13 chars in input.
    # If you supply 13 digits, it check if the checksum is right.
    #
    # Input: a string containing the code
    # Output: encoded string or -1
    #
    # Simone Fioravanti, simospa@gieffeedizioni.it
    #
    
        my $inputCode = @_[0];
        my $i;
        my $first;
        my $checksum  = 0;
        my $barcode = "";
        my $inTableA;
        my $temp;
    
    #
    # Don't ask why, but leave it there.
    # Took more time than the whole code to figure out!!
    #
    
    $inputCode  =~ s/[^0-9]//g;
    
    #
    # Allow 13 digits input - let's trust our users for now
    #	                                
    
        if ( $inputCode =~ /^[0-9]{12}[0-9]?$/ ) {
            for ( $i = 1 ; $i < 12 ; $i += 2 ) {
                $checksum += ord( substr( $inputCode, $i, 1 ) ) - 48;
            }
            $checksum *= 3;
            for ( $i = 0 ; $i < 12 ; $i += 2 ) {
                $checksum += ord( substr( $inputCode, $i, 1 ) ) - 48;
            }
            $temp = ( 10 - $checksum % 10 ) % 10;
    
    #
    # Allow 13 digits input only if the 13th is a correct checksum
    #
    
            if (   ( $inputCode =~ /^[0-9]{13}$/ )
                && ( substr( $inputCode, 12, 1 ) == $temp ) )
            {
                $inputCode = substr( $inputCode, 0, 12 );
            }
            if (   ( $inputCode =~ /^[0-9]{13}$/ )
                && ( substr( $inputCode, 12, 1 ) != $temp ) )
            {
                return (-1);
            }
    
            $inputCode .= $temp;
            chomp($inputCode);
    
            $barcode =
              substr( $inputCode, 0, 1 )
              . chr( 65 - 48 + ord( substr( $inputCode, 1, 1 ) ) );
    
            $first = ord( substr( $inputCode, 0, 1 ) ) - 48;
    
            for ( $i = 2 ; $i <= 6 ; $i++ ) {
                $inTableA = 0;
    
                if ( $i == 2 ) {
                    if ( $first >= 0 && $first <= 3 ) { $inTableA = 1; }
                }
                elsif ( $i == 3 ) {
                    if ( $first == 0 || $first == 4 || $first == 7 || $first == 8 )
                    {
                        $inTableA = 1;
                    }
                }
                elsif ( $i == 4 ) {
                    if (   $first == 0
                        || $first == 1
                        || $first == 4
                        || $first == 5
                        || $first == 9 )
                    {
                        $inTableA = 1;
                    }
                }
                elsif ( $i == 5 ) {
                    if (   $first == 0
                        || $first == 2
                        || $first == 5
                        || $first == 6
                        || $first == 7 )
                    {
                        $inTableA = 1;
                    }
                }
                elsif ( $i == 6 ) {
                    if (   $first == 0
                        || $first == 3
                        || $first == 6
                        || $first == 8
                        || $first == 9 )
                    {
                        $inTableA = 1;
                    }
                }
    
                if ($inTableA) {
                    $barcode .= chr( 65 - 48 + ord( substr( $inputCode, $i, 1 ) ) );
                }
                else {
                    $barcode .= chr( 75 - 48 + ord( substr( $inputCode, $i, 1 ) ) );
                }
            }
            $barcode .= "*";
    
            for ( $i = 7 ; $i <= 12 ; $i++ ) {
                $barcode .= chr( 97 - 48 + ord( substr( $inputCode, $i, 1 ) ) );
            }
            $barcode .= "+";
        }
        else { $barcode = -1 }
        return $barcode;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Hai postato nel forum sbagliato: fatti spostare in PHP.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.