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

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

satan 13-10-05 19:44

[php] עזרה בביטויים רגולים
 
אוקיי אז הבעיות שלי דיי מוזרות. הקוד כדי שתבינו לפני כן על מה מדובר:
PHP קוד:

if (preg_match("/^[0-9]/",$_GET["id"]) and $_GET["id"] ==$t["id"]) {
echo 
"<a href=\"index.php\">ראשי</a> >> $_GET[cat] >> <b>".$t["title"]."</b> <br />";
$t["text"] = str_replace("\n","<br />",$t["text"]); 
echo 
"<br />".$t["text"];
} else {
    echo 
"העמוד אינו קיים3";
    } 

אז ככה עשיתי ביטוי רגולי שבודק את המשתנה ID שנשלח בכתובת (URL) בודק אם יש בו מספרים וגם אם המספר קיים בDB אם כן אז זה מציג קוד... אחרת זה כותב שגיאה.
משום מה אם אני כותב נגיד בכתובת id=bla או אם אני כותב id=42353 (הID הכי גבוה שיש הוא 20 בערך) אז זה מציג לי דף לבן ללא כלום...
אבל אם אני כותב id=12vg (ז"א מספר וגם אותיות) אז זה כותב את הודעות השגיאה.

אני לא מבין למה זה ככה, למה זה בכלל מציג לי את השגיאה רק כשיש גם אות וגם מספר.
ולמה זה מציג לי דף לבן בחלק מהמקרים? (אגב אני חדש בביטויים רגולים :S )

זה כל קוד הPHP שמופיע בדף.. כך שאני לא מבין מה קורה פה. :S

Ikki 13-10-05 19:53

יותר הגיוני שתוציא את ה Id הכי גבוהה, ואותו תשים בhight Id, או שתעשה בדיקה אם ה Id קיים בכלל.

satan 13-10-05 19:59

ציטוט:

נכתב במקור על ידי Ikki
יותר הגיוני שתוציא את ה Id הכי גבוהה, ואותו תשים בhight Id, או שתעשה בדיקה אם ה Id קיים בכלל.

לא כל ID נמוך מהID הכי גבוה קיים.. ז"א יש דפים שמוחקים לדוגמא או דברים כאלה.
הקיצר עשיתי גם את זה:
PHP קוד:

 ....and [B]$_GET["id"] ==$t["id"][/B

בשאילתא כתוב
... WHERE id =$_GET["id"]
כך ש... זה עובד.

לא ענית על שאלותיי )=

Ikki 13-10-05 20:50

מה אמרתי?!, לבדוק פשוט אם ה Id קיים.
יותר קל.

satan 13-10-05 20:56

ציטוט:

נכתב במקור על ידי Ikki
מה אמרתי?!, לבדוק פשוט אם ה Id קיים.
יותר קל.

בסדר הורדתי תחלק של ה preg_match("/^[0-9]/",$_GET["id"]) and
וגם אם אני כותב עכשיו id=bla43 [ז"א מספר ואות] אז זה פשוט מעביר אותי לדף לבן..
גם אם אני כותב id=4526423623 זה מעביר אותי לדף לבן... אני לא מבין למה... מעביר אותי לדף לבן ולא לשגיאה...

Deagly 13-10-05 22:11

אם אתה רוצה לבדוק אם יש רק מספרים
אתה יכול לעשות את זה בעזרת הפונקציה is_numeric()
אתה לא צריך להסתבך עם PREG בשביל זה..

satan 13-10-05 23:24

ציטוט:

נכתב במקור על ידי Deagly
אם אתה רוצה לבדוק אם יש רק מספרים
אתה יכול לעשות את זה בעזרת הפונקציה is_numeric()
אתה לא צריך להסתבך עם PREG בשביל זה..

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

ושוב.. לא קיבלתי תשונה על בעייתי המוזרה )=

Ikki 14-10-05 15:12

תסדר את הקוד,
בכיף אני ישב על זה.


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

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