לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 26-08-2006, 12:41
  eXeCuT3 eXeCuT3 אינו מחובר  
 
חבר מתאריך: 30.06.06
הודעות: 185
ביטויים רגולרים - בעיה מוזרה בהתאמה

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

קוד:
!<([^/][^> ]*)[^>]*>(.*?)</\1>!s


כעשיתי עם זה נסיונות זה היה נראה בסדר, אבל עכשיו שמתי לב למשהו מוזר
כשאני עושה preg match all לביטוי
קוד:
!<([^/][^> ]*)[^>]*>(.*?)<(/\1)>!s

ומתאים את זה ל
<abc><a></a>
זה מתאים לכל המחרוזת... כשאני מסתכל על ה matches, אני מקבל
קוד:
Array ( [0] => Array ( [0] => <abc><a></a> ) [1] => Array ( [0] => a ) [2] => Array ( [0] => <a> ) [3] => Array ( [0] => /a ) )


למה זה ככה?
ה
קוד:
<([^/][^> ]*)[^>]*>

היה אמור להתאים למחרוזת הכי ארוכה שזה מוצא, abc, בגלל שזה חמדן, ואז לחפש </abc>, לא ?
במה טעיתי?

נערך לאחרונה ע"י eXeCuT3 בתאריך 26-08-2006 בשעה 12:58.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 26-08-2006, 21:49
  eXeCuT3 eXeCuT3 אינו מחובר  
 
חבר מתאריך: 30.06.06
הודעות: 185
בתגובה להודעה מספר 2 שנכתבה על ידי Web שמתחילה ב "אבל היא לא תגית שנסגרה... רק את A סגרת :)"

אני לא אומר שזו תגית שנסגרה...

תראה, ב
קוד PHP:
 <([^/][^> ]*)[^>]*> 

זה התאים ל abc

החלק הזה
קוד PHP:
 ([^/][^> ]*) 

התאים ל
a
ו
קוד PHP:
 [^>]* 

התאים ל bc.

ואז זה חיפש תג סוגר ל "a", במקום לכל ה
abc

ואז למעשה זה הרס את המטרה של זה..
השאלה שלי היא כזאת
למה
קוד PHP:
 ([^/][^> ]*) 

התאים רק ל a ?
זה אמור להיות חמדן בברירת מחדל... ככה שזה אומר ש
קוד PHP:
 [^> ]* 

אמור להתאים לכל תו שהוא לא רווח או >
איך זה שזה התאים רק ל a? זה מוזר :X

דרך אגב
סתם בתור נסיון, ניסיתי לעשות התאמה ל
קוד PHP:
 <([^/][^> ]*[^>]*)> 

במקום ל
קוד PHP:
 <([^/][^> ]*)[^>]*> 

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


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

נערך לאחרונה ע"י eXeCuT3 בתאריך 26-08-2006 בשעה 21:52.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 05:49

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר