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

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

Hanan 17-08-10 21:10

תן מוזר בסיום החיתוך של substr
 
אהלן חברים,
מישהו נתקל בפונקציה substr ברגע שחותכים איזשהו משפט יש כמו תו מוזר בסוף המשפט?
זה קורה רק בקידוד של UTF-8..

יש רעיון למישהו לחיתוך אחר של משפט? או מה זה הבעיה המוזרה הזאת?

תודה, ממש מסקרן אותי לדעת מה זה לפני שאני שובר את הראש...

~The_Sultan~ 17-08-10 21:12

זה בגלל שקידוד UTF-8 הוא MULTIBYTE, לא כמו קידוד רגיל - כל תו הוא בעצם שני תווים (בהסבר קצר..)
אתה צריך להשתמש בפונקציה mb_substr עם ערך UTF-8 בקידוד (תלמד עליה טיפונת ותבין) או לעשות מספר זוגי של חתיכה ב-SUBSTR, אבל זה כמובן הרבה פחות טוב וסתם דרך שלא תמיד עובדת ולא מומלצת.

Hanan 17-08-10 21:21

קרנבל,
תודה רבה :)

intercooler3819 18-08-10 14:26

כשאתה חותך עם SUBSTR תווי UTF-8 כל תו הוא למעשה 2 בתים (להבדיל מחיתוך של תווים שהם לא UTF-8)
מה שקורה למעשה זה שאתה כיביכול חותך את התו באמצע (כיוון שכל תו הוא כמו 2 תווים וחתכת כמות אי זוגית..) ואז הביית היחיד שנשאר לא ניתן להצגה אז הדפדפן מציג אותו בתור סימן שאלה "?" או סתם מין ריבוע מוזר..
.
תשתמש ב mb_substr או שתבנה פונקציה משלך, בהצלחה!

Hanan 18-08-10 17:56

השאלה היא למה אם יש בסוף המשפט את התו " והוא נאלץ לחתוך בדיוק עליו, הוא מוסיף & בסוף המשפט?...

RS324 18-08-10 21:40

ציטוט:

נכתב במקור על ידי ~The_Sultan~ (פרסם 775694)
זה בגלל שקידוד UTF-8 הוא MULTIBYTE, לא כמו קידוד רגיל - כל תו הוא בעצם שני תווים (בהסבר קצר..)
אתה צריך להשתמש בפונקציה mb_substr עם ערך UTF-8 בקידוד (תלמד עליה טיפונת ותבין) או לעשות מספר זוגי של חתיכה ב-SUBSTR, אבל זה כמובן הרבה פחות טוב וסתם דרך שלא תמיד עובדת ולא מומלצת.

תיקון קטן - לא כל התווים הם זוגיים לחלקם יש משקל של 1 ולא של 2
לדוגמא רווחים , מספרים , אותיות באנגלית...

intercooler3819 21-08-10 23:36

ציטוט:

נכתב במקור על ידי RS324 (פרסם 775794)
תיקון קטן - לא כל התווים הם זוגיים לחלקם יש משקל של 1 ולא של 2
לדוגמא רווחים , מספרים , אותיות באנגלית...

כן כמובן

וחנן - כנראה שהחצי השני של " מסמל לבדו &
אבל הדבר יכול להשתנות כתלות בדפדפן של המשתמש


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

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