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

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

liorclub 06-11-10 17:10

php מחרוזות בעברית
 
שלום לכולם.
עשיתי טופס POST ששולח מחרוזת לקובץ ACTION.PHP

הקליטה היא בצורה הבאה: (לדוגמא מחרוזת "אבג")
$str = $_POST["fname"];

נוצרת בעיה מסויימת בתווים בעברית:
כאשר אני עושה
echo $str;
זה מדפיס את המחרוזת בעברית
כאשר אני מדפיס
$echo $str[0];
זה אמור להציג את האות 'א' אבל זה מציג לי גיבריש \ # \ &
אבל לא מציג את התו בעברית

אני מנסה לעשות חישוב גימטריה של האותיות בשם.

אשמח לעזרה איך לפתור את הבדיקה של תו תו כאשר המחרוזת בעברית.

Tomer 06-11-10 17:11

הקובץ מקודד כ- UTF8 ?

liorclub 06-11-10 17:21

שניהם בצורה הבאה:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

אחד טופס FORM

שני טופס כזה עם PHP

עדכון:
http://pastebin.com/WzmpvxPi
הדבקתי את שני הקבצים פה

תוצאה למחרוזת: אבגד
אבגדא(גיבריש)

BlueNosE 06-11-10 17:35

תשתמש בפונקציה הבאה:
PHP קוד:

function substr_utf8($str,$start)
{
    
preg_match_all("/./su"$str$ar);

    if(
func_num_args() >= 3) {
        
$end func_get_arg(2);
        return 
join("",array_slice($ar[0],$start,$end));
    } else {
        return 
join("",array_slice($ar[0],$start));
    }



Tomer 06-11-10 17:36

ורק לחדד מעט את מה שעומר רשם,

ב UTF8 כל אות עברית שווה 2 תאים ולא 1 כמו אותיות באנגלית (ולא רק עברית, אלא כל שפה מערבית). אם אתה מבקש את $x[0] אתה בעצם לוקח תא אחד מתוך 2 שמרכיבים אות - ככה שאתה מקבל ג'יבריש.

liorclub 06-11-10 19:30

עובד, אבל חלקית :)
for($x = 0; $x <= $strlen; $x++)
{
echo substr_utf8($str,$x) . "<br />";
}

עשיתי את הלולאה הזו, שתדפיס כל תו בודד

למחרוזת בדיקה, התוצאה היא:
בדיקה
דיקה
יקה
קה
ה

אני צריך לבודד כל תו כדי לבדוק מהו ולהוסיף למספר בצורה גימטרית בצורה הבאה:
מחרוזת בדיקה
תשובה:
ב = 2
ד = 4
י = 10
ק = 100
ה = 5
תשובה סופית: 121

BlueNosE 06-11-10 19:51

שים לב להשתמש בזה בשביל אורך:
PHP קוד:

function strlen_utf8($s)
{
    return 
strlen(utf8_decode($s));


הטעות היא שלא נתת את הפרמטר השלישי ב-substr

Haimz 06-11-10 19:53

קוד:

<?php
        function get($post, $length) {
                $end = substr($post, 0, $length);
                return $end;
        }

        // How to use ? o.O
        // get($your_post_name, number_of_lengths_to_row);
        // That was so hard?
?>


BlueNosE 06-11-10 19:56

ציטוט:

נכתב במקור על ידי Hanino (פרסם 785423)
קוד:

<?php
        function get($post, $length) {
                $end = substr($post, 0, $length);
                return $end;
        }

        // How to use ? o.O
        // get($your_post_name, number_of_lengths_to_row);
        // That was so hard?
?>


מה? איך זה עוזר לו לבעיה?

liorclub 06-11-10 20:42

BlueNosE
תודה רבה על העזרה.

עזרת לי מאוד !!


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

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