שלום ‏אורח!
דוא"ל:  סיסמא:  
זכור אותי   |   שכחת סיסמה?   |   להרשמה בחינם עכשיו!
« חזור לפורום תכנות סה"כ 4 תגובות על פני 1 עמודים
uzone
אוהד מטע
הודעות: 240
ותיק
ושוב, בעייה מוזרה עם אורך מחרוזת.
שוב שלום.
יש לי בעייה מוזרה עם קיצור מחרוזת..

יש לי מחררוזת ארוכה ואני רוצה לקצר אותה לאורך 110 תווים

אז בדקתי בעזרת STRLEN מה האורך שלה ואם היא ארוכה אני מקצר אותה בעזרת SUBSTR.

עכשיו, מחרוזות באנגלית זה מקצר לי יופי, אבל מחרוזות בעברית זה מקצר בהרבה יותר מאשר 110 תווים, יכול להיות שמחרוזות בעברית לוקחות יותר ביטים ובגלל זה זה מקצר יותר (או שאני סתם ממציא שטויות?)

תודה
16:39 | 06/03/10 מסר אישי הודעה חדשה
uzone
אוהד מטע
הודעות: 240
ותיק

אגב, אני צריך לבנות את אותו דבר גם בJS וגם בPHP... בJS זה עובד באופן מושלם. אבל בPHP הבעייה נמשכת.
16:55 | 06/03/10 מסר אישי הודעה חדשה
iOrel
אוראל קיי
הודעות: 61
חדש

לגבי העברית תשמור בקידוד utf-8 אם לא כל תו יקבל 5 ספרות (#dasd) לדוגמה.
21:06 | 06/03/10 מסר אישי הודעה חדשה
Exalted Web
שי בן משה
הודעות: 883
ותיק
בPHP יש לך ספריית mb.
במקום strlen תשתמש בmb_strlen ובמקום substr בmb_substr.
MB = Multi Byte. בקידוד UTF8 כל תו לא לטני לוקח 2byte ככה שתאורטית כמות התווים עולה מ256 (מASCII) ל65536. שזה אחלה, אבל כל תו תופס פי שתיים ופונקציות כמו strlen מתייחסות לזה כאל שני תווים.
בהצלחה.
21:46 | 06/03/10 מסר אישי הודעה חדשה
uzone
אוהד מטע
הודעות: 240
ותיק
פורסם במקור על ידי Exalted Web   צפה בהודעה
בPHP יש לך ספריית mb.
במקום strlen תשתמש בmb_strlen ובמקום substr בmb_substr.
MB = Multi Byte. בקידוד UTF8 כל תו לא לטני לוקח 2byte ככה שתאורטית כמות התווים עולה מ256 (מASCII) ל65536. שזה אחלה, אבל כל תו תופס פי שתיים ופונקציות כמו strlen מתייחסות לזה כאל שני תווים.
בהצלחה.



זה לא עוזר...
ניסיתי וזה עדיין מקצר את ההודעה...
כמו שאמרתי הJS מקצר בצורה טובה והPHP לא

אפשר לראות את הבעייה באתר http://usay.co.il
להתחבר עם משתמש test וסיסמא testtest

אם כותבים הודעה אישית ארוכה ואז לוחצים אנטר זה שולח אותה... ומקצר אותה אטומטית לאורך השורה. לאחר שלוחצים רענן זה מקצר אותה ע"י PHP ולא ע"י JS ושם רואים שזה מתקצר בהרבה יותר ממה שזה באמת צריך להתקצר
 

19:15 | 10/03/10 מסר אישי הודעה חדשה