ביטויי רגולרי

ר ו ע י צ

New member
ביטויי רגולרי

שלום. אני כותב סקריפט שרץ על דף HTML, וצריך לשלוף את כל הקישורים שרשומים בתגי <a>. הסקריפט הבא עובד טוב לתגים מסוג: <a href="gagaga"> אבל לא מזהה תגים מסוג <a target="myTarget" href="gaga"> או כל תג שבו יש "זבל" לפני ה href. להלן הסקריפט: preg_match_all("|<a href=\"?([^\"'# >]+)|i", $contents, $arrayoflinks); While(List(,$link) = Each($arrayoflinks[1])) { // Do stuff with $link } איך לתקן את הביטוי הרגולרי? תודה מראש, רועי
 

ר ו ע י צ

New member
אוף ! הכל התחרבש. מנסה שוב

שלום. אני כותב סקריפט שרץ על דף HTML, וצריך לשלוף את כל הקישורים שרשומים בתגי <a>. הסקריפט הבא עובד טוב לתגים מסוג:
<a href="gagaga">​
אבל לא מזהה תגים מסוג
<a target="myTarget" href="gaga">​
או כל תג שבו יש "זבל" לפני ה href. להלן הסקריפט:
preg_match_all("|<a href=\"?([^\"'# >]+)|i", $contents, $arrayoflinks); While(List(,$link) = Each($arrayoflinks[1])) { // Do stuff with $link }​
איך לתקן את הביטוי הרגולרי? תודה מראש, רועי
 

זאינאל

New member
הביטוי השגרתי שלך צריך להראות כך

/<a[^>]+href=[\"']?(.*?)[\"']?[ >]/​
זה לא יתפוס כמו שצריך URLים עם רווחים או סוגר משולש בהם (בשביל זה צריך מפרש קצת יותר חכם, לדוגמה ביטוי שגרתי מורכב כמו שאפשר לעשות ב-PERL 6 ) אבל הסיכוי שלך להתקל בהם הוא נמוך והם בכל מקרה לא חוקיים. אגב - אני אוהב להשתמש בקו נטוי בשביל לתחום ביטויים שגרתיים, אבל אתה תעשה מה בא לך
 
למעלה