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 10 anni fa
joule
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda