Conversione script...

Qualcuno sa aiutarmi nel convertire questo script da perl a php??

grazie 1000

#!/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;

}

inviato 11 anni fa
joule
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda