דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. גמטריה ב php

גמטריה ב php

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 231 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • I מנותק
    I מנותק
    ivrtikshoret
    כתב ב נערך לאחרונה על ידי
    #1

    שלום וברכה
    אני מחפש פונקצייה להמרת מספרים לאותיות וכן הפוך בשפת php
    בניתי כבר משהו אבל משום מה זה לא עובד לי אשמח לעזרתכם:

    function convertWord($word) {
    if (strlen($word)== 1){
    $word = convertLetter($word);
    }
    if (strlen($word)== 2){
    $a = (intdiv($word, 10))*10;
    $b = $word-$a;
    $word = convertLetter($a).convertLetter($b);
    }
    if (strlen($word)== 3){
    $a = (intdiv($word, 100))*100;
    $b = (intdiv(($word-$a), 10))*10;
    $c = $word-$a-$b;
    $word = convertLetter($a).convertLetter($b).convertLetter($c);
    }
    function convertLetter($letter) {
        $values = [
    1 => 'א', 2 => 'ב',
    3 => 'ג', 4 => 'ד', 5 => 'ה', 6 => 'ו',  7 => 'ז',  8 => 'ח',  9 => 'ט',  10 => 'י', 20 => 'כ',
     30 => 'ל', 40 => 'מ', 50 => 'נ', 60 => 'ס',  70 => 'ע',  80 => 'פ',  90 => 'צ',  100 => 'ק', 200 => 'ר',  300 => 'ש', 400 => 'ת',
        ];
    
        return $values[$letter];
    };
    }
    echo convertWord(2);
    
    תגובה 1 תגובה אחרונה
    0
    • ח מנותק
      ח מנותק
      חוקר
      כתב ב נערך לאחרונה על ידי
      #2

      יש כאן מחלקה שמישהו כתב
      לא אני
      הוא כתב זאת עם שימוש באותיות בעברית..
      בכל מקרה דוגמא לשימוש הוא

      $num = גימטריא::אותיות_למספר('קידוש השם')
      
      
      class גימטריא
      {
          /*
          @ פונקציה סטטית ההופכת אותיות למספר הגימטריא
      
           @ הפרמטר הראשון והחובה הוא כמובן המחרוזת אותה רוצים להמיר
            @ הפרמטר השני אופציונלי ומאפשר להגדיר מפריד שכל התווים עד אליו יחושבו כאלפים
      
          */
          public static function אותיות_למספר ( $str , $alafim = FALSE )
          {
              $gimatriya = 0 ;
      
              if ( ! ($alafim === FALSE) )
              {
                  $str = explode ( $alafim , $str );
      
                  $gimatriya += self::גימטריא_למספר ( array_shift( $str ) ) * 1000 ;
      
                  foreach ( $str as $txt )
                  {
                      $gimatriya += self::גימטריא_למספר ( $txt )  ;
                  }
              }else{
                  $gimatriya += self::גימטריא_למספר ( $str )  ;
              }
      
              return $gimatriya ;
          }
      
      
          /*
          @ פונקציה סטטית ההופכת מספר לגימטריא
      
           @ הפרמטר הראשון והחובה הוא כמובן המספר אותו רוצים להמיר
      
           @ השני קובע כברירת מחדל שלאותיות לא יתווספו גרשיים
             → TRUE יגדיר שכן יהיה גרשיים
      
           @ השלישי קובע כברירת מחדל שהאלפים יחושבו בנפרד ולא יתקבל מחרוזת של תתתתתתתתת…
               כמו כן הוא קובע שהמילה `אלפים` תתווסף למחרוזת
            ←ניתן להגדיר בו 0 כדי לבטל כליל או אחד כדי לקבל את התוצאה כ ה' תשע"ח למשל בלי המילה אלפים
      
           @ הרביעי יקבע האם להציב אותיות מנצפכ בסוף מילה כברירת מחדל או םןץףך אם נגדיר true
          */
      
          public static function מספר_לאותיות ( $num , $gershayim = FALSE , $alafim = 2 , $םןץףך = FALSE )
          {
      
      
              $gimatriya = self::מספר_לגימטריא ( $num , $alafim ) ;
      
              if ($gershayim)
              {
                  $gimatriya = explode ( ' ' , $gimatriya ) ;
      
                  $i = 0 ;
                  foreach ( $gimatriya as $str )
                  {
                      if( $str == 'אלפים' ) {$i++; continue ; }
      
                      if( mb_strlen( $str , 'UTF-8' ) == 1 )
                      {
                          $gimatriya [$i] .= "'" ;
                      }else{
                          $gimatriya [$i] = (mb_substr ( $str , 0 , mb_strlen( $str , 'UTF-8' ) - 1 ) . '"' . mb_substr ( $str , mb_strlen( $str , 'UTF-8' )-1 ,1 ))  ;
                      }
                      $i++;
                  }
      
                  $gimatriya = implode ( ' ' , $gimatriya ) ;
              }
      
              if ( $םןץףך )
              {
                  $replace = array ( 'מ' => 'ם' ,'נ' => 'ן' ,'צ' => 'ץ' ,'פ' => 'ף' ,'כ' => 'ך' );
      
                  $str = $gimatriya ;
      
                  $last_ot = mb_substr ( $str , mb_strlen( $str , 'UTF-8' )-1 ,1 ) ;
      
                  $gimatriya = mb_substr ( $str , 0 , mb_strlen( $str , 'UTF-8' ) - 1 ) ;
      
                  $gimatriya .= in_array ( $last_ot , array ( 'מ', 'נ', 'צ', 'פ', 'כ' ) ) ? $replace[$last_ot] : $last_ot ;
              }
      
              return $gimatriya ;
          }
      
          /*
          פונקציה סטטית המשווה גימטריא של שתי מחרוזות ומחזירה אמת בהתאמה ושקר באי התאמה
           @ הפרמטר הראשון והשני הם המחרוזות להשואה
            @ הפרמטר השלישי והרביעי יגדירו מפריד אלפים עבור המחרוזות שבפרמטר הראשון והשני
          */
          public static function גימטריא_שווה  ( $str1 , $str2 , $alafim1 =FALSE , $alafim2 =FALSE )
          {
      
              return self::אותיות_למספר ( $str1 , $alafim1 )  == self::אותיות_למספר ( $str2 , $alafim2 ) ? TRUE : FALSE ;
          }
      
      
      //מערך אם גימטריא של כל האותיות
          protected static $OTIYOT = array (
              'א' => 1 ,
              'ב' => 2 ,
              'ג' => 3 ,
              'ד' => 4 ,
              'ה' => 5 ,
              'ו' => 6 ,
              'ז' => 7 ,
              'ח' => 8 ,
              'ט' => 9 ,
              'י' => 10 ,
              'כ' => 20 ,
              'ך' => 20,
              'ל' => 30 ,
              'מ' => 40 ,
              'ם' => 40 ,
              'נ' => 50 ,
              'ן' => 50 ,
              'ס' => 60 ,
              'ע' => 70 ,
              'פ' => 80 ,
              'ף' => 80 ,
              'צ' => 90 ,
              'ץ' => 90 ,
              'ק' => 100 ,
              'ר' => 200 ,
              'ש' => 300 ,
              'ת' => 400
          );
      
      
      //פונקציה פנימית המבצעת את החישוב ממספר לאותיות
          protected static function מספר_לגימטריא ( $num , $alafim = 2 )
          {
              $num = (int)$num ;
      
              $gimatriya = '' ;
      
              switch( $num )
              {
                  case 0:
                      break;
      
                  case ( $num >= 1000 ) :
      
                      if ( $alafim )
                      {
                          $rest = $num % 1000 ;
                          $gimatriya .= self::מספר_לגימטריא ( ( $num -$rest ) / 1000 ) ;
                          $gimatriya .= $alafim==2? ' אלפים ' : ' ' ;
                      }else{
                          $rest = $num % 400 ;
                          foreach( range( 1, ($num -$rest)  / 400 ) as $i ) { $gimatriya .= 'ת' ; }
                      }
      
                      $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                      break;
      
                  case ( $num >= 400 ):
                      $rest = $num % 400 ;
                      foreach( range( 1, ($num -$rest)  / 400 ) as $i ){ $gimatriya .= 'ת' ; }
                      $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                      break;
      
                  case ( $num >= 100 ):
                      $rest = $num % 100 ;
                      $gimatriya .= array_search ( $num - $rest , self::$OTIYOT );
                      $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                      break;
      
                  case 15:
                      $gimatriya .=  'טו' ;
                      break;
      
                  case 16:
                      $gimatriya .= 'טז' ;
                      break;
      
                  case ( $num >= 10 ):
                      $rest = $num % 10 ;
                      $gimatriya .= array_search ( $num - $rest , self::$OTIYOT );
                      $gimatriya .= self::מספר_לגימטריא ( $rest , $alafim ) ;
                      break;
      
                  case ( $num < 0 ):
                      break;
      
                  default:
                      $gimatriya .= array_search ( $num , self::$OTIYOT );
      
              }
      
              return $gimatriya ;
          }
      
      //פונקציה פנימית המבצעת את החישוב מאותיות למספר
          protected static function גימטריא_למספר ( $str )
          {
              $str = preg_replace( "/[^א-ת]/" , '' , $str );
      
              $gimatriya = 0 ;
      
              for( $i = 0 ; $i < mb_strlen( $str , 'UTF-8' ) ; $i++ )
              {
                  $gimatriya += self::$OTIYOT [mb_substr ( $str , $i , 1)] ;
              }
              return $gimatriya ;
          }
      
      }//end of class גימטריא
      
      I תגובה 1 תגובה אחרונה
      4
      • I מנותק
        I מנותק
        ivrtikshoret
        השיב לחוקר ב נערך לאחרונה על ידי ivrtikshoret
        #3

        @חוקר
        משום מה לא הצלחתי לקבל את מה שרציתי מהקוד שלך
        אז שיפצרתי את הקוד שלי אפשר להשתמש עם זה בשמחה

        
        //גימטריה מספרים לאותיות
        function convertWord($word) {
        $convertLetter = function ($letter) {
            $values = [
        1 => 'א', 2 => 'ב',
        3 => 'ג', 4 => 'ד', 5 => 'ה', 6 => 'ו',  7 => 'ז',  8 => 'ח',  9 => 'ט',  10 => 'י', 20 => 'כ',
         30 => 'ל', 40 => 'מ', 50 => 'נ', 60 => 'ס',  70 => 'ע',  80 => 'פ',  90 => 'צ',  100 => 'ק', 200 => 'ר',  300 => 'ש', 400 => 'ת',
            ];
        
            return $values[$letter];
        };
        if (strlen($word)== 1){
        $word = $convertLetter($word);
        }
        elseif (strlen($word)== 2){
        $a = (intdiv($word, 10))*10;
        $b = $word-$a;
        $word = $convertLetter($a).$convertLetter($b);
        }
        elseif (strlen($word)== 3){
        $a = (intdiv($word, 100))*100;
        $b = (intdiv(($word-$a), 10))*10;
        $c = $word-$a-$b;
        $word = $convertLetter($a).$convertLetter($b).$convertLetter($c);
        }
        $word = str_replace("י"."ה","טו",$word);
        $word = str_replace("י"."ו","טז",$word);
        
        return $word;
        }
        

        עריכה: זה עובד רק עד 499 (אני הייתי צריך את זה רק עד ל 200 אז זה מצוין בשבילי) מי שרוצה מוכן לשפר את זה

        תגובה 1 תגובה אחרונה
        3
        • dovidD dovid העביר נושא זה מ-תכנות ב-

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום