בקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!
-
לעזור לכולםהשיב לשמואל ש. ב 11 בדצמ׳ 2022, 16:52 נערך לאחרונה על ידי לעזור לכולם 12 בנוב׳ 2022, 17:01
-
@לעזור-לכולם לא קשור
-
@שמואל-ש כתב בבקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!:
@לעזור-לכולם לא קשור
אם לא אכפת לך, אתה יכול להעלות את הקוד שכתבת?
-
@לעזור-לכולם כתב בבקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!:
אם לא אכפת לך, אתה יכול להעלות את הקוד שכתבת?
@שמואל-ש כתב בבקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!:
@dovid מה זאת אומרת? באיזה פקודה? אז בפקודה פשוטה כגון
<?php $str="אבגדה"; echo $str[2]; ?> -
לעזור לכולםהשיב לשמואל ש. ב 11 בדצמ׳ 2022, 17:45 נערך לאחרונה על ידי לעזור לכולם 12 בנוב׳ 2022, 17:46
תבדוק אם זה עובד לך
<?php $str="אבגדה"; echo mb_substr($srt,0,1); ?> -
@לעזור-לכולם לא, הוא לא מדפיס כלום!
-
לעזור לכולםהשיב לשמואל ש. ב 11 בדצמ׳ 2022, 17:51 נערך לאחרונה על ידי לעזור לכולם 12 בנוב׳ 2022, 17:51
@שמואל-ש סליחה אני מצטער היה טעות בקוד לעיל [בשם המשתנה...]
זה מתוקן<?php $str="אבגדה"; echo mb_substr($str,0,1); ?> -
@לעזור-לכולם לא השתנה שום דבר
-
@dovid @לעזור-לכולם עכשיו אני רואה שב
mb_substr
שהציע @לעזור-לכולם הוא לא כותב כלום, אבל בפשוטsubstr
הבעיה היא רק אם אני כותב בנוסף למספר שממנו יתחיל, גם מספר התווים שיקח, במקרה הזה שבאנגלית הוא עובד חלק, בעברית הוא מתחיל לקשקש...
מה עושים? -
@שמואל-ש כתב בבקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!:
@לעזור-לכולם כתב בבקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!:
[VSC או על השרת]
בשרת
מה זה VSC?
-
@chagold כתב בבקבלת תו ממחרוזת ב-PHP התו חוזר בג'יבריש!:
השתמשת בזה?
עשיתי כך
<?php $str="אבגדהו"; echo utf8_encode($str[0]); ?> ולא מודפס לי כלום!
-
@שמואל-ש
איך שאני מבין יש שתי אפשרויות מה גורם לבעיה,
אם קוד המקור שלך מקודד בקידוד יוניקוד אז הגורם לבעיה היא ככה:
קוד PHP רגיל מתייחס למחרוזת עם ההנחה השגויה שכל תו הוא באורך של בייט אחד, הנחה זו שגויה לגבי טקסט עברי בייצוג יוניקוד כמו קידוד UTF-8 וכדומה, לכן קוד רגיל של PHP נותן תוצאה לא נכונה, הוא מוציא את הבייט השני שזה לא התו השני
אם זו הבעיה אז הפתרון של @לעזור-לכולם היא הנכונה,
הדגמה:
https://onlinephp.io/c/6258c
השימוש בפוקנציית mb_substr יודעת לפצל את הטקסט לתווים גם כאשר תו יחיד הוא יותר מבייט אחדאם קוד המקור שלך מקודד בצורה שכל תו הוא בייט אחד למשל ANSI, אז קוד בסיסי של PHP אמור לעבוד אבל יכול להיות שזה לא מוצג נכון בפלט כי מי שמציג את זה לא יודע להציג את הטקסט בקידוד ANSI
ואם ככה אז צריך להשתמש גם בפתרון של @Shmuel754 לשמור בקידוד יוניקוד UTF8 או לחילופין לגרום שמי שמציג את הפלט יבין שמדובר בקידוד ANSI -
@איש-נחמד ב"ה זה כבר עובד לי ע"י השיטה mb_substr שהביא @לעזור-לכולם רק כנראה האתר ששם עשיתי את הניסויים לא הכיר את המחלקה הזאת...
@chagold @yossiz תודה רבה גם לכם על שעזרתם לי כ"כ!!! -
25/29