אתה נמצא כאן יסודות השפה  >>  עברית ב-PHP  >>  טקסט בעברית

טקסט בעברית

PHP תומכת בעברית בצורה יוצאת דופן, וללא ספק היא אחת השפות שהכי קל לעבוד איתן בעברית (תודות למפתחיה הישראלים). היא מספקת פונקציה שהופכת טקסט בעברית לטקסט ויזואלי (קידוד של עברית ויזואלית), תוך שמירה על מבנה המילים והמשפטים בעברית גם כאשר בטקסט משולבים אנגלית ומספרים. פונקציה זו היא hebrev(), שמקבלת בארגומנט הראשון את הטקסט ובארגומנט השני את מספר התווים שיהיו בכל שורה (אופציונלי). הפונקציה יודעת לפרק את השורות הארוכות לשורות קצרות יותר באורך שנקבע לה.

פונקציה נוספת חשובה (לא רק לעברית) היא nl2br(), שהופכת סימנים של ירידת שורה בקוד של PHP (\n) לסימן ירידת שורה ב-HTML (<BR>). ב-PHP4 הפונקציה הופכת ל-<br \> כדי לתמוך גם בירידת שורה ב-XHTML.

הפונקציה hebrevc() היא שילוב של 2 הפונקציות שהזכרנו. היא הופכת את הטקסט בעברית לטקסט ויזואלי (אפשרי עם חיתוך שורות), והופכת כל \n ל-<BR> (ב-PHP4 ל-<br \>).

נביא דוגמא קצרה לשימוש בפונקציות אלו:

<?php
  if (!isset($msg))
/*אם המשתנה של ההודעה לא מאותחל.
כלומר, עדיין לא הכנסנו הודעה להציג.
מדפיסים טופס לקליטת הודעה.
*/

  {
   ?>
   <FORM action="
<?= $PHP_SELF; ?>" method="post">
/*הטופס מקבל את ההודעה מן המשתמש
ושולח אותו חזרה לקוד הנוכחי ($PHP_SELF).
בקובץ אחד אנו גם מקבלים את ההודעה דרך טופס,
וגם מטפלים בנתונים שנשלחים מהטופס.
*/

      Enter message in Hebrew:<BR>
      <TEXTAREA row=20 col=80 name="msg" dir="rtl"></TEXTAREA>
      <INPUT type="submit" value="Sent Message">
   </FORM>
   
<?php
  }
  else
/*אם הכנסנו הודעה להצגה.
(לאחר ששלחנו את הטופס).
*/

  {
     $msg=hebrevc($msg,100);
/*הופכים את ההודעה לעברית ויזואלית,
עם מקסימום של 100 תווים לשורה
והפיכת \n ל-<br \>.
*/

     echo "Your message was:<BR>\n<DIV align=\"right\">".$msg."</DIV>";
/*מדפיס את ההודעה של המשתמש.
(עם הצמדה לימין).
*/

  }
?>

חשוב לציין כי פונקציות אלו (hebrev() ו-hebrevc()) נועדו עבור קידוד של עברית ויזואלית בלבד, ואין צורך להשתמש בהם כאשר משתמשים בקידוד לוגי כי הקידוד הלוגי דואג בעצמו לעברית. בדר"כ כבר לא משתמשים בקידוד ויזואלי כאשר משתמשים בעברית, ולכן כיום פונקציות אלו לא נמצאות ממש בשימוש בדפי עברית.


תגובות בנושא

עברית + MySQL 06-12-02 17:01
 מיכאל
#263

למיטב הבנתי יש בעיה בשילוב של MySQL 3 ועברית. האם ניתן דרך PHP לפתור את הבעיה ולאחסן ערכים עבריים במסד נתונים?

עברית ב-MySQL 06-12-02 17:02
 אלי חן (מנהל)
#266

אולי בגרסאות קודמות של MySQL 3 הייתה בעייה, אבל אני השתמשתי ב-MySQL 3.23.53 ולא הייתה לי בעייה להכניס ערכים בעברית.
בכלל, יש כעת MySQL גרסה 4... מומלץ!!!

עברית ב-mysql... 01-11-02 01:01
 עמיעד
#541

אכן אין בעייה להכניס ערכים
אבל כל מי שיינסה לעשות שאילתה עם
order by
לשדות בעברית(לא תראו הבדל עם קצת שדות אלא עם לפחות 30) ייקבל מעורבב ולא מסודר...

אני פתרתי את זה ע"י הכנסה למערך וסידור עם
ksort...

תגובה: עברית ב-MySQL 01-11-02 01:01
 אלי חן (מנהל)
#543

אין ל-MySQL בעיה לסדר תוצאות שאילתות לפי טקסט בעברית.. הבעיה שאתה מדבר עליה נובעת מכמה סיבות:
הבעיה קורית רק בשדות שמוגדרים כ-TEXT (או המקבילות שלה באורכים שונים), וזה מפני ששדות מסוג TEXT מסודרים לפי קידוד שמוגדר ל-MySQL (ברירת המחדל בדר"כ הוא latin1), והקידוד הזה יוצר בלאגן בסידור של ערכים בעברית.

ישנם מספר אפשרויות לפתירת הבעיה:
1. שינוי הקידוד של MySQL לקידוד תומך עברית.
2. סידור כבינארי (למשל: ORDER BY BINARY text_field).
3. הגדרת השדה כ-BLOB (או המקבילות שלה באורכים שונים), שכברירת מחדל מוגדרת כ-BINARY.

אני ממליץ לך לעשות את 2 או 3..

עברית בMYSQL 09-12-03 01:01
 איווט זפרלו
#1098

שלום לכם
אני חדשה ב SQL .אני רוצה לעשות מיני ציט ועשיתי טבלה עם 3 שדות :id, שם ומסר.כתבתי כמה שמות ומסרים בתוך הטבלה הנתונים בעברית.
ב SCRIPT שהכנסתי בדף האתר כתבתי שאלון קטן עם שם ,מסר ,לשלוח ,והנה הבעיה: כשאר אני עונה על השאלון בתוך האתר, השם מוער טוב בעברית אך המסר לא -אז שמה שכתבתי בתוך טבלת הניתונים (שם ומסר)מופיעים יפה בעברית.אז למה לא בתוך האתר?
יתרה מזה כשאר אני רושמת באתר את המסר במקום של השם וההפך אז המסר נקלט טוב בעברית אבל השם לא.
יש למישהו הסברים ופתרונות לבעיה זאות ?
אני מודה על כל תשובה
(האתר שלי בLYCOS)
איווט

שמירת טקסטים והצגתם 09-12-03 18:02
 אלי חן (מנהל)
#1129

ללא קשר לעברית..
1. בעת שמירת נתונים ב-MySQL דרך PHP, השתמשו ב-mysql_escape_string לכל מחרוזת המתקבלת מהמשתמש (למשל מטופס).
2. בעת הצגת פלט טקסט בפורמט HTML, השתמשו בפונקציה htmlspecialchars שהופכת תווים מיוחדים ב-HTML.
2 הכללים האלה בוודאי יעזרו לך..

form to mail PHP בעברית 02-11-03 08:01
 דור
#1302

שלום,
אני מעצב אתרים, ודי חדש לPHP.
אני מנסה לבנות טופס מאוד פשוט של form to mail.
למרות שאני משתמש בפונקציה שהופכת את המשתנים לעברית ויזואלית, אני מקבל גיבריש.
תוכל אולי לומר לי למה ?
אודה לך מאוד,
חג שמח,
דור.


לדף הקודםעברית ב-PHP -הקודם
לתחילת הדףלתחילת הדף
הבא- בחן את עצמךלדף הבא