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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - הפונקציה basename (https://hosts.co.il/forums/showthread.php?t=7907)

WebProject 02-12-05 21:07

[מדריך] PHP - הפונקציה basename
 
רז, החלטתי לתת לך את מבוקשך, בקצת יותר משפטים :)

אז הנה המדריך:


basename();

מה הפונקצייה? למה היא משמשת? מה ניתן לעשות בעזרתה?
  1. הפונקצייה תחזיר את השם הבסיסי, מה הכוונה? אם שם הקובץ נגמר בתוו "\" הפונקצייה תחזיר את הצירוף תווים הראשון שאחריו [הסבר לקוח מ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;
?>

השקעתי במדריך הזה, מקווה שיעזור.


יום טוב :rolleyes:



Tomer 02-12-05 21:12

לא יותר קל לעשות
PHP קוד:

$path "tomer.php";
$path explode(".",$path);
echo 
$path// return php 

?

ומדריך יפה... למרות שלא הכי שימושי

WebProject 02-12-05 21:14

צודק ב100%, בסוף המדריך חשבתי על זה [מוזר שדווקא אז זה צץ, למרות שאני לא ממש מתעסק עם מערכות העלאת קבצים] בכל מקרה, חשבתי "למה לא?" ופירסמתי בכל זאת.

בכל מקרה זה יכול לעזור למשתמש :)

satan 02-12-05 21:37

יפה מאוד טל D:

עכשיו הבנתי לאן הלכת לעשר דקות (שנמשכות חצי שעה חחחח ). ^^

psycho 03-12-05 09:58

לא הבנתי למה מיועד המדריך
לקחת סיומת אפשר בעזרת ה MIME TYPE ואלף דברים שונים

ואם לדוגמא הקובץ הוא

path/somedir/somefile

ואם לדוגמא הקובץ הוא
path/hey.you.zip

:\

גיא.

WebProject 03-12-05 10:00

ציטוט:

נכתב במקור על ידי psycho
לא הבנתי למה מיועד המדריך
לקחת סיומת אפשר בעזרת ה MIME TYPE ואלף דברים שונים

ואם לדוגמא הקובץ הוא

path/somedir/somefile

ואם לדוגמא הקובץ הוא
path/hey.you.zip

:\

גיא.

גיא גיא גיא, תחשוב על זה ככה:

ממתי אפשר להכניס תווים כאלו לשם של קובץ? [/].


ושוב, אני יודע שיש עוד די הרבה דרכים לעשות זאת, אבל בחרתי בדרך הזאת.

טל.

RazRaz 03-12-05 10:13

תודה רבה רבה על ההשקעה.

WebProject 03-12-05 10:16

שמחתי לעזור :)

רומן 03-12-05 11:52

כמה דברים, יש פונקציה בהעלאה שבודקת את סוג הקובץ, לכן זה לא ממש שימושי,
וזה ממש נובי להתשמש ב rand במצב כזה, הכי טוב לשתמש ב time שלא חוזר על עצמו ואולי להוסיף rand, הכי טוב כמו ב imageshack, שם הקובץ והלוסיך ספרות ואותיות ראנדומאלית,

אבל מדריך נחמד :)

WebProject 03-12-05 11:54

ציטוט:

נכתב במקור על ידי רומן
כמה דברים, יש פונקציה בהעלאה שבודקת את סוג הקובץ, לכן זה לא ממש שימושי,
וזה ממש נובי להתשמש ב rand במצב כזה, הכי טוב לשתמש ב time שלא חוזר על עצמו ואולי להוסיף rand, הכי טוב כמו ב imageshack, שם הקובץ והלוסיך ספרות ואותיות ראנדומאלית,

אבל מדריך נחמד :)

אני מודע לכך, אבל שוב, כתבתי דמריך בהתאם לצרכיו של המשתמש שהיה צריך אותו.

ואבקש להוריד את הצבע של החתימה שלך, זה נוגד את חוקי הפורום.


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

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