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

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

ChaoscripT 14-09-10 10:51

בעיה עם Mod rewrite
 
אני רוצה לעשות ככה את הכתובות:
domain.com/הורדה-אייל-גולן-מפה-לשם.html

עכשיו הגעתי למצב הזה,
http://vivm.us/songs/download-App-1-...--מפה-לשם.html

הבעיה שכל האתר בגיבריש,
ישלי איזה פונקציה:
PHP קוד:

    function seoname($seoit) {

   
$seoit strip_tags($seoit);

   
$seoit str_replace("'"""$seoit);

   
$seoit trim($seoit"-");

   
$seoit str_replace(" ""-"$seoit);

   
$seoit strtolower($seoit);

$seoit preg_replace("/\xD7([\x90-\xAA])/e","chr(ord(\${1})+80)"$seoit);  - את הפקודה הזאת מצאתי פה בHOSTS

   
return $seoit;



עכשיו מאז ששמתי את הפקודה שמצאתי פה ב- HOSTS כל האתר נהיה גיבריש, אבל הכתובת בסדר,
אבל אם אני יוריד את הפקודה, האתר יהיה בעברית אבל הכתובות יהיו בגיבריש.

אשמח לעזרה.

Erez | TrustMedia.co.il 14-09-10 12:53

תעביר את האתר לקידוד UTF-8 ואז לא תהיה לך בעיה של ג'יבריש

ChaoscripT 14-09-10 13:20

ניסיתי גם עם UTF-8, עדיין האתר עצמו גיבריש, הכתובות טובות.

Daniel 15-09-10 22:23

מכיוון שזו שאלה שנוגעת לפורום תכנות, הנושא מועבר.

BlueNosE 16-09-10 00:03

כשעשיתי משהו כזה פעם, יצרתי Wildcard שתפס את כל הביטויים שבתבנית שלי (לא רק אלו שבעברית או משהו - הכל, באמצעות נקודה-פלוס [+.]). את הכתובת שתפסתי שלחתי ב-GET, אז עשיתי קידוד מהסינית שקיבלתי ב-GET לעברית באמצעות הפונקציה שהבאת פה.

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

ChaoscripT 16-09-10 00:28

@Bluenose,
לא הבנתי אותך, תוכל לפרט יותר?

BlueNosE 16-09-10 09:30

הרעיון הוא לקלוט כל כתובת שבתבנית (נניח song-XXXX) ולשלוח את ה-XXXX לבדיקה. הבדיקה עצמה מתרגמת לטקסט ב-CP1255 ואז הטקסט הופך "קריא".

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

astricks 16-09-10 09:49

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

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

BlueNosE 16-09-10 10:25

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

astricks 16-09-10 17:32

שמע, אני לא מאמין ש PHP מקבל סימנים לטיניים.. כל עוד אתה משתמש בפונקציות שהבאתי הכל אמור להיות סבבה מהבחינה הזאת.
מבחינת הפלט? אם יש באמת סימנים לטיניים - אז כמובן שזאת בעיית קידוד. שים לב שאתה שומר גם את הקובץ עצמו בקידוד תואם וגם מגדיר קידוד תואם לעמוד. שוב - ממליץ UTF-8. אם אתה מגיע למצב שיש שאתה בכל זאת מקבל כקלט מחזורת בקידוד שגוי - iconv בהצלחה
http://php.net/manual/en/book.iconv.php


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

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