-
שלום וברכה
אני מחפש פונקצייה להמרת מספרים לאותיות וכן הפוך בשפת 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); -
יש כאן מחלקה שמישהו כתב
לא אני
הוא כתב זאת עם שימוש באותיות בעברית..
בכל מקרה דוגמא לשימוש הוא$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 גימטריא -
יש כאן מחלקה שמישהו כתב
לא אני
הוא כתב זאת עם שימוש באותיות בעברית..
בכל מקרה דוגמא לשימוש הוא$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 גימטריא@חוקר
משום מה לא הצלחתי לקבל את מה שרציתי מהקוד שלך
אז שיפצרתי את הקוד שלי אפשר להשתמש עם זה בשמחה//גימטריה מספרים לאותיות 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 אז זה מצוין בשבילי) מי שרוצה מוכן לשפר את זה
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות