regex

N i X

New member
regex

שבת שלום, אני כרגע עובד על סקריפט upload לגלריית התמונות שלי, כמשתמש מעלה קובץ, אני מעוניין לבדוק אם השם מתאים לי (שיהיהו תווים באנגלית בלבד, מספרים, או התווים: '_' ו '-'. לצורך העניין רציתי להשתמש ב regular expression, חשבתי על זה:
^[0-9a-zA-Z_\-]\.(jpe?g|zip)$​
השתמשתי בפונקציה ereg() בשביל להשוות לשם הקובץ:
<pre> <?php $start = time(0); $file_name_regex = "[0-9a-zA-Z_\-]"; $file_ext_regex = "(jpe?g|zip)"; $my_regex = "^$file_name_regex\.$file_ext_regex$"; // "^[0-9a-zA-Z_\-]\.(jpe?g|zip)$"; $filename = "3453b345_l-a.zip"; print(ereg($my_regex, $filename, $regs)); print("\n\n"); print_r($regs); print("\n\n"); print(time(0)-$start); ?> </pre>​
כל עוד אני לא מתמש באופרטור ^, ereg עובד בסדר (?), אבל אם אני מנסה להשתמש באופרטור הזה, מחזיר לי שקר תמיד (?). תודה מראש לכל העונים ;)
 

N i X

New member
מקפיץ! ;)

אני נוסע לכמה ימים לאילת, חוזר יום חמישי אח"צ ;)
 
בגלל...

ש^ מסמל את התחלת האינפטוט ואתה רוצה לבדוק רק אם הם קיימים. ככה שהם באים כמה ולפחות אחד מהם מחזיר שזה לא בתחילת האינפוט. ככה שאתה לא אמור להשתמש בו.
 

N i X

New member
אבל...

אם אני רוצה לבדוק את כל הסטרינג, אחרת אם אני לא יעשה ^ $, ויהיה לי רווח באמצע, או תו מוזר אחר שאני לא רוצה, זה עדיין יתאים לי, כי יש את שארית הסטרינג שעדיין מתאים לpattern, לדוגמא: שם קובץ: bla err.zip אני יקבל ש err.zip מתאים, או סתם r.zip. ואני רוצה שהוא יבדוק את כל הסטרינג...
 

N i X

New member
אגב, כשאני מנסה:

patterns כמו:
^bla$​
זה מקבל את זה בסדר גמור. משום מה כשאני עושה pattern עם [], זה מתפקשש...
 
אמ... מתחיל להיות ממש משונה פה...

בכל מקרה בגלל שאני מרגיש לא נעים שיום אחד נחתתי על הפורום הורדתי תשובה וברחתי אז באתי לסיים את העבודה. הכל טמון ב"+" דוגמא:
var myReg = new RegExp(/^[0-9a-zA-Z_\-]+\.(jpe?g|zip)$/);​
דרך אגב הקוד כתוב בצורת js כי ממש אין לי מושג בphp. אבל אני די בטוח שתבין מה הבעיה. אתה צריך להוסיף+ בגלל שכשאתה נותן לו לחפש בלי פלוס אז הוא מחפש רק התאמה ראשונה וזהו ואז זה אומר שההתאמה הייתה אמורה להיות אות אחת ואחריה ה.zip ואם אתה מוסיף + שמסמל את הצירוף פעם אחת ומעלה אז הוא מחפש... בלאט הסתבכתי בהסבר. בכל מקרה אני בכלל נאמן למייקרוסופט ולקוד הסגור. אז חיים נעימים שיהיו לכולכם ואני אנסה לא להטריד אותכם שוב.
 
למעלה