Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: перевести несколько строк с ASP на PHP
 
 автор: elenaki   (03.05.2011 в 16:22)   письмо автору
 
 

может кто-нибудь помочь перевести несколько строк с ASP на PHP?


  Private Function ValidVat(ByVal strAFM As String) As Boolean
        Try
            Dim fValidVat As Boolean
 
            If Not (strAFM Like "#########") Then Return False
 
            Dim b(8) As Char
            b = strAFM.ToArray
            fValidVat = ((((0 + 256 * _
                           Val(b(0)) + _
                           128 * Val(b(1)) + _
                           64 * Val(b(2)) + _
                           32 * Val(b(3)) + _
                           16 * Val(b(4)) + _
                           8 * Val(b(5)) + _
                           4 * Val(b(6)) + _
                           2 * Val(b(7))) Mod 11) Mod 10) = Val(b(8)))
 
            Return fValidVat
 
        Catch ex As Exception
            Return False
 
        End Try
 
        Exit Function
    End Function

  Ответить  
 
 автор: cheops   (03.05.2011 в 18:36)   письмо автору
 
   для: elenaki   (03.05.2011 в 16:22)
 

На PHP это должно выглядеть как-то так
<?php
  
function ValidVat($strAFM)
  {
    if(!
preg_match("|^\d{9}$|"$strAFM)) return false;

    
$check = (((256 $strAFM[0] + 
                
128 $strAFM[1] + 
                 
64 $strAFM[2] + 
                 
32 $strAFM[3] + 
                 
16 $strAFM[4] + 
                  
$strAFM[5] + 
                  
$strAFM[6] +
                  
$strAFM[7]) % 11) % 10);
                           
    return 
$check == $strAFM[8]; 

  }
?>

  Ответить  
 
 автор: elenaki   (03.05.2011 в 18:54)   письмо автору
 
   для: cheops   (03.05.2011 в 18:36)
 

спасибо. я уже дома. завтра на работе попробую.

  Ответить  
 
 автор: elenaki   (04.05.2011 в 12:11)   письмо автору
 
   для: elenaki   (03.05.2011 в 18:54)
 

ура! работает! кстати, это проверка греческого аналога ИНН. только в ИНН, насколько я помню, 10 цифр...

  Ответить  
 
 автор: cheops   (04.05.2011 в 16:35)   письмо автору
 
   для: elenaki   (04.05.2011 в 12:11)
 

Любопытно, на всякий случай сошлюсь на тему, где подсчитывается контрольная сумма для российского страхового пенсионного страхования, вдруг кто-то наткнется на эту тему и ему потребуются российские реалии http://softtime.ru/forum/read.php?id_forum=1&id_theme=80115.

  Ответить  
 
 автор: ols   (04.05.2011 в 21:32)   письмо автору
 
   для: cheops   (03.05.2011 в 18:36)
 

  return $check == $strAFM[8]; 

А почему здесь стоит оператор сравнения?

  Ответить  
 
 автор: cheops   (04.05.2011 в 22:18)   письмо автору
 
   для: ols   (04.05.2011 в 21:32)
 

Функция возвращает true или false в зависимости от того, правильно подсчитана контрольная сумма или нет. Эта контрольная сумма размещена в последнем элементе, с ним и нужно сравнивать полученный результат.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования