הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה עם קידוד UTF-8 (https://hosts.co.il/forums/showthread.php?t=33670)

lalamen 26-10-06 15:16

בעיה עם קידוד UTF-8
 
השתמשתי בקידוד UTF-8 לסקריפט שאני בונה ושאני מקבל מידע מהמשתמש אז הסקריפט אמור להחליף אותיות מסויימות במספרים, הבעיה שזה לא עובד לי עם קידוד UTF-8 (גם הקובץ שמור עם קידוד UTF-8).

תודה לעוזרים.

RS324 26-10-06 16:14

אתה יכול לראות את הקוד של ההחלפה ?
ואיזה אותיות אתה רוצה להחליף באיזה מספרים ?

lalamen 26-10-06 16:20

ציטוט:

נכתב במקור על ידי RS324
אתה יכול לראות את הקוד של ההחלפה ?
ואיזה אותיות אתה רוצה להחליף באיזה מספרים ?

זה מה שעשיתי

PHP קוד:

function love($you,$them)
    {
        
$you  addslashes($you);
        
$them addslashes($them);
        if(empty(
$you) OR empty($them))
        {
            return 
'<a href="#" onclick="history.go(-1); return false;" class="error">בדוק שמילאת נכון את כל השדות!</a>';
        }
        else 
        {
            
$you_length  strlen($you);
            
$them_length strlen($them);
            
$love_count  0;
            for(
$count 0$count<$you_length$count++)
            {
                
$letter1 $you{$count};
                if(
$letter1 == 'א')
                {
                    
$love_count += 2;
                }
                if(
$letter1 == 'ה')
                {
                    
$love_count += 2;
                }
                if(
$letter1 == 'ב')
                {
                    
$love_count += 2;
                }
                if(
$letter1 == 'ה')
                {
                    
$love_count += 2;
                }
                if(
$letter1 == 'ל')
                {
                    
$love_count += 3;
                }
                if(
$letter1 == 'ע')
                {
                    
$love_count += 1;
                }
                if(
$letter1 == 'ד')
                {
                    
$love_count += 3;
                }
            }
        
            for(
$count 0$count<$them_length$count++)
            {
                
$letter2 $them{$count};
                if(
$letter2 == 'א')
                {
                    
$love_count += 2;
                }
                if(
$letter2 == 'ה')
                {
                    
$love_count += 2;
                }
                if(
$letter2 == 'ב')
                {
                    
$love_count += 2;
                }
                if(
$letter2 == 'ה')
                {
                    
$love_count += 2;
                }
                if(
$letter2 == 'ל')
                {
                    
$love_count += 3;
                }
                if(
$letter2 == 'ע')
                {
                    
$love_count += 1;
                }
                if(
$letter2 == 'ד')
                {
                    
$love_count += 3;
                }
            }
        
            
$amount 0;
        
            if(
$love_count 0)
            {
                
$amount 5-(($you_length+$them_length) / 2);
            }
            if(
$love_count 2)
            {
                
$amount 10-(($you_length+$them_length) / 2);
            }
            if(
$love_count 4)
            {
                
$amount 20-(($you_length+$them_length) / 2);
            }
            if(
$love_count 6)
            {
                
$amount 30-(($you_length+$them_length) / 2);
            }
            if(
$love_count 8)
            {
                
$amount 40-(($you_length+$them_length) / 2);
            }
            if(
$love_count 10)
            {
                
$amount 50-(($you_length+$them_length) / 2);
            }
            if(
$love_count 12)
            {
                
$amount 60-(($you_length+$them_length) / 2);
            }
            if(
$love_count 14)
            {
                
$amount 70-(($you_length+$them_length) / 2);
            }
            if(
$love_count 16)
            {
                
$amount 80-(($you_length+$them_length) / 2);
            }
            if(
$love_count 18)
            {
                
$amount 90-(($you_length+$them_length) / 2);
            }
            if(
$love_count 20)
            {
                
$amount 100-(($you_length+$them_length) / 2);
            }
            if(
$love_count 22)
            {
                
$amount 110-(($you_length+$them_length) / 2);
            }
        
            if(
$amount 0)
            {
                return 
$amount 0;
            }
            else if(
$amount 99)
            {
                return 
$amount 99;
            }
            else 
            {
                return 
$amount;
            }
        }
    } 

זה מחשבון אהבה שהמרתי מקוד js לphp על פי בקשה של מישהו הינה הוא בפעולה
http://wrzil.net/calculator.php?act=love
בדוגמא שמשנים את הקידוד לwindows-1255 אז זה פועל לי.

RS324 26-10-06 17:04

טוב אז ככה :

בדקתי את הקובץ בקידוד UTF8 והוא עובד מצויין

אבל מה שכן... המחשבון היפה שלך לא כל כך עובד
וזאת הסיבה למה תמיד יוצא 0
PHP קוד:


  $letter1 
$you{$count};
                
                if(
$letter1 == 'א')
                {
                    
$love_count += 2;
                } 

אתה תמיד משנה את LETTER לפי המספר, וגם LETTER מקבל את השם שלי
ככה שבריצות של הלולאה יש
רותם1
רותם2
רותם3
אני דיי בטוח שאתה התכוונת לעשות :
$letter1 = $you[$count]
בכל מקרה לי זה עבד חלק עם UTF8 אם עדיין יש לך בעיה...תמיר לקוד אסקי
בעזרת הפונקציה ORD ותגמור עניין...
וד"א תחליף ל SWITCH כמה IF השתמשת... לא יעיל בכלל :)

lalamen 26-10-06 19:29

זאת נוסחה שמצאתי פה http://www.alternativli.co.il/start/love_cal.htm
הבעיה בקוד שלי זה שזה לא מוצא את האותיות בעברית בתוך המחרוזת, אבל למה:-0

RS324 26-10-06 21:16

ציטוט:

נכתב במקור על ידי lalamen
זאת נוסחה שמצאתי פה http://www.alternativli.co.il/start/love_cal.htm
הבעיה בקוד שלי זה שזה לא מוצא את האותיות בעברית בתוך המחרוזת, אבל למה:-0

אממ, אל תעתיק, ואל תשכח ש JS ו PHP זה לא אותו דבר
והסקריפט דורש שינויים
אז תשנה
באג 1 היה כבר בפוסט הקודם שהבאתי לך
אז תקח את זה ותעשה סדר
והכי פשוט אם אתה מסתבך עם ה UTF8 פשוט תמיר ל ASCII עם הפונקציה ORD
ותאמין לי שלא תהיה לך שום בעיה


כל הזמנים הם GMT +2. הזמן כעת הוא 23:56.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ