זקוקה לעזרה עם regular expressionו

זקוקה לעזרה עם regular expressionו

האתר שלי כתוב ב-VB, ב-ASP. בממשק הניהול, המשתמשים שלי כותבים טקסט, ואני רוצה לאפשר להם להכניס הפניה לתמונה שנמצאת באלבום. אני חשבתי על משהו כזה: טקסט טקסט טקסט טקסט P123P טקסט טקסט טקסט P456P טקסט טקסט טקסט. המספר שנמצא בין התווים P ו-P הוא הקוד של התמונה שאליה המשתמש מפנה. בזמן שאני מציגה באתר את הטקסט שהזין המשתמש, אני רוצה לזהות בטקסט את כל המקומות שבהם הוכנסה הפניה כזו, וגם לשלוף את הקוד הרלוונטי. בכל מקום כזה, אני רוצה להפעיל פונקציה שתקבל כפרמטר את הקוד ותחזיר מחרוזת HTML שמציגה תמונה + כיתוב וטקסט אלטרנטיבי מתוך ה-database. המחרוזת הזו תשולב במקום מתאים בתוך הטקסט המקורי, במקום ההפניה. ניסיתי להבין איך לעשות את זה בעזרת RegExp, אבל איבדתי את הידיים והרגליים. אני אשמח להכוונה שתעזור לי להתחיל לבנות את הקוד הזה. רוב תודות
 

מיקי256

New member
עזבי RegExp...

תקראי קצת על InStr, Mid ושאר פונק' הטיפול ב-String-ים של VB.
 

ארזירון

New member
קצת הכוונה

אז לפני שאת מתייאשת לגמרי, ועוברת לקוד לא יעיל (בלשון המעטה) שמשתמש ב-mid וכיוצ"ב, או פשוט עוברת לשפה אחרת שלא בהכרח תעזור לך בהקשר של RegEx כי בכל מקרה תצטרכי ללמוד על RegEx, אז הנה לינק: http://www.regular-expressions.info/vb.html יש שם גם קצת על איך להשתמש ב-RegEx מתוך VB, וגם הרבה על RegEx בכלל.
 
תודה ../images/Emo13.gif

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

אני לוקחת טקסט שמכיל קודים, מאתרת את הקוד ומציגה את הפענוח שלו משולב במקום שבו הוא הופיע בטקסט.
InitialString = "This is a long text. here should be a picture PS213182PE and now I wish to continue. here I will inert another picture PS2004566PE and go on writing." Set RegExpObj = New RegExp RegExpObj.Pattern = "\bps[0-9]*pe\b" RegExpObj.IgnoreCase = True RegExpObj.Global = True Set MyMatches = RegExpObj.Execute(InitialString) for each thing in MyMatches original = thing changedthing = change(thing) InitialString = replace(InitialString, original, changedthing) next response.Write InitialString Set RegExpObj = nothing​
הבעיה שזה עובד כשפונקציית change נראית ככה:
function change(strString) strString = Replace(strString, "PS", "") strString = Replace(strString, "PE", "") if len(strString) > 4 then strString = "{font color=red}" & strString & "{/font}" else strString = "{font color=blue}" & strString & "{/font}>" end if change = "{br}" & strString & "{br}" end function​
אבל לא עובד כשהיא נראית ככה:
function change(strString) strString = Replace(strString, "PS", "") strString = Replace(strString, "PE", "") dim strSize, strZoom, strZoomSize, strPic, tmp strSize = left(strString, 1) strZoom = left(right(strString, len(strString)-1), 1) strZoomSize = left(right(strString, len(strString)-2), 1) strPic = right(strString, len(strString)-3) tmp = "<br>גודל=" & strSize & "<br>הגדלה=" if strZoom = "0" then tmp = tmp & "לא" else tmp = tmp & "כן" end if tmp = tmp & "<br>גודל הגדלה=" & strZoomSize & "<br>קוד תמונה=" & strPic & "<hr>" check = tmp end function​
מה אני מפספסת?
 

mamachika

New member
../images/Emo9.gif אופס

תודה. מסתבר שיש שעות שהכי טוב ללכת לישון...
 
למעלה