02-12-05, 21:07
|
# 1
|
מ.תיכנות
|
[מדריך] PHP - הפונקציה basename
רז, החלטתי לתת לך את מבוקשך, בקצת יותר משפטים
אז הנה המדריך:
basename();
מה הפונקצייה? למה היא משמשת? מה ניתן לעשות בעזרתה? - הפונקצייה תחזיר את השם הבסיסי, מה הכוונה? אם שם הקובץ נגמר בתוו "\" הפונקצייה תחזיר את הצירוף תווים הראשון שאחריו [הסבר לקוח מphp.net]
מה ניתן לעשות בעזרתה?
לרוב במערכות העלאות קבצים, מתכנתים משתמשים בפונקצייה היעילה למערכות מסוג זה, rand שמשמשת להחזרת מספר רנדומאלי, כלומר מספר שישתנה כל פעם, והסיכוי שיחזור פעמיים, קטן מאוד.
פונקצייה זאת [ rand] בעצם מבטיחה במערכות העלאות קבצים אי התנגשות בין שמות קבצים, כלומר תופעה כזאת:
filename: file.gif * 2
לא תחזור מפני ששם הקובץ הינו מספר רנדומאלי.
כמובן שלא חייב להשתמש במספר רנדומאלי אלא גם בהצפנת השם וקיצורו ע"י פונקצייה כלשהי.
אז מה בעצם עוזרת הפונקצייה basename?
לאחר שהופכים את שם הקובץ למספר רנדומאלי, ללא טיפול בסיומת הקובץ, הסיומת פשוט "תבלע" במספר הרנדומאלי.
אז מה עושים? שיטתי המומלצת היא שימוש בפונקצייה basname ולפני הפיכת שם הקובץ למספר רנדומאלי, לוקחים את הסיומת ע"י הפונקצייה.
אז כאן בעצם אני אתן מדריך ללקיחת סיומת הקובץ ע"י הפונקצייה.
--
הגדרת הפונקצייה ושימושה:
PHP קוד:
<?Php basename( string path , [string suffix,tag]); ?>
דוגמא:
PHP קוד:
<?Php $path = "tal/gleichger" basename($path); // will return "gleichger" ?>
מה שעשית כאן זה אחסון שמי ושם משפחתי על משתנה, והפרדתו ע"י סימן ה"סלאש".
מה שהפונקצייה תעשה היא תחזיר את צירוף התווים האחרון לאחר ה"סלאש".
אבל לאחר כל זה, בשביל מה זה בכל זאת עוזר?
ברגע שיש לנו שם קובץ כמו לדוגמא file.php ואנו רוצים להפריד את הסיומת מן שם הקובץ, הדבר הראשון שעולה לי בראש הוא החלפת הנקודה בסימן הסלאש, ע"י הפונקצייה str_replace.
דוגמא:
PHP קוד:
<?Php $file = "pic.gif"; $str = str_replace(".","/",$file);
$x = basename($str); // will return "gif" ?>
מה שעשיתי פה זה בעצם החלפת תו הנקודה בתו ה"סלאש" וע"י שימוש בפונקצייה basename החזרתי את סיומת הקובץ.
לאחר שסיימנו זאת, עלינו לקבוע שם רנדומאלי לתמונה, והוספת סיומת הקובץ.
דוגמא:
PHP קוד:
<?Php $file = "mypic.jpg"; $replace = str_replace(".","/",$file);
$basename = basename($replace);
$rand = rand(1,999);
print "Uploade-".$rand.".".$basename; ?>
השקעתי במדריך הזה, מקווה שיעזור.
יום טוב
|
|
|