שתי שאלות

pleox

New member
שתי שאלות

1)איך אני בודק אם מחרוזת מסוימת קטנה יותר מ-4 תווים ע"י תנאי? 2)אני רוצה לקבל מהגולש שם משתמש...ואני צריך שהשם משתמש: -יהיה רק באותיות אנגליות(גם קטנות וגם גדולות) -מספרים כמובן -ללא תווים מיוחדים מלבד - ו _(קו תחתון ומקף). איך עושים דבר כזה? ע"י המון תנאים? בתודה מראש!
 

p k a k

New member
->

א. .strlen ב. ereg (מדובר ב-regExp). למעט יותר פרטים לגבי ב' - קישור. מידע קיים בשפע ב-php.net. בהצלחה.
 

pleox

New member
אה אוקיי!

זאת אומרת שהתשובה לשאלה השנייה שלי היא:
if( ereg("([^A-Za-z0-9])" , $string ) == false) { echo "מחרוזת לא תקינה"; } else{ echo "מחזרוזת תקינה!"; }​
אנסה זאת. תודה רבה לכולם! Pleox
 

N0

New member
כמעט

אם אתה רוצה גם מקף ומקף תחתון
if( preg_match('/^A-Za-z0-9_\-$/' , $string ) == false) { echo "מחרוזת לא תקינה"; } else{ echo "מחזרוזת תקינה!"; }​
שים לב שהקפתי את הביטוי בגרש יחיד (אחרת צריךלבצע בריחה כפולה \\ לפני המקף ) וסימן ה$ בסוף מצביע על סוף המחרוזת אחרת זה לא יעבוד כמו שצריך. כמו כן השתמשתי בPREG_MATCH שאמורה לעבוד קצת יותר מהר מereg אבל מקבלת ביטויים קצת שונים אם אתה גם רוצה לבדוק אורך של המשתמש באותו משפט אתה יכול להשתמש בזה
preg_match('/^A-Za-z0-9_\-{3,12}$/' , $string )​
הקוד הבא יגביל את עורך המחרוזת למינימום 3 תווים ומקסימום 12
 

fat fish

New member
עדיין מסובך מדי...

אם רוצים למצא מילים שהתווים המתאימים בלבד הינם אותיות, ספרות וקו תחתון - נוכל להשתמש ב: \w
 

N0

New member
\w

משתנה לפי ההגדרות המקומיות ולכן תלוי לפי הגדרת השרת ניתן לקבל גם אותיות בעיברית ובכלל אותיות מקומיות לפי השפה
 

pleox

New member
הבנתי! תודה רבה!

חסכת לי כמה תנאים מרגיזים בזה...
 

pleox

New member
ניסיתי על הקוד שלי

וזה לא עובד...לא משנה איזו מחרוזת אני מזין-תקינה או לא תקינה תמיד הוא אומר לי שהיא לא תקינה...למה זה? תודה
 

pleox

New member
הנה הקוד...

if(preg_match('/^A-Za-z0-9_\-$/' , $user) == false){ echo "<font color='red' size='2' face='arial'>שם המשתמש לא תקין</font>"; }else{ ..........​
לא משנה איזו מחרוזת אני מכניס...תקינה או לא תקינה...תמיד אני מקבל על המסך: "שם המשתמש לא תקין" מה הבעיה? תודה רבה!
 

N0

New member
תעשה echo ל$user

ותראה שהוא מתקבל כמו שצריך תבדוק גם שאין רווחים או תווים שקופים לפני (white spaces) בסוף ובהתחלה כי הבדיקה הזו כמובן לא מקבלת רווחים. בעיקרון נראה שזה אמור לעבוד
 

pleox

New member
לא...

עשיתי כל בדיקה אפשרית. הכל מתקבל וניסיתי אין ספור מחרוזות. כולן מחזירות false לא משנה מה... אולי זה בהגדרה של השרת שלי? יש לי wamp...
 

N0

New member
סליחה

צריך כמובן לתחום את המחרוזת התנאי ולבדוק אם הוא חוזר על עצמו
echo preg_match('/^[a-zA-Z0-9_\-]+$/' , $user);​
ה + אומר אחד או יותר מהתווים בסוגריים המרובעים. זה אומר שמחרוזת ריקה גם לא תתקבל אם אתה רוצה לקבל גם מחרוזת ריקה תשתמש ב *
 
למעלה