09-11-11, 20:39 | # 1 |
Whatever
|
החלפת מילה בקישור
היי,
הכותרת נשמעת פשוטה- ואכן זו לא בעיה בכלל להחליף מילה במילה אחרת (או בקישור, לצורך העניין). אני צריך משהו קצת אחר ואני לא ממש מוצא פתרון. אני צריך להחליף מילה (נניח, "יוסי") בקישור (נניח, http://www.yossi.com) - אבל כל עוד המילה היא בפני עצמה ולא חלק מקישור אחר. נניח במשפט "ליוסי היו ידיים גדולות" - המילה יוסי תוחלף בקישור. במידה והמשפט הוא "ל<a href=......>יוסי</a> היו ידיים גדולות" - המילה יוסי לא תוחלף והקישור יישאר שלם. למישהו יש רעיון? ניסיתי עם preg_replace ולא הצלחתי כ"כ. תודה!
__________________
תומר |
09-11-11, 21:16 | # 2 |
חבר בקהילה
|
לא לזה משמשים regular expression's הם משמשים לדברים הרבה יותר מורכבים מאשר החלפת מילה..
אתה יכול להשתמש בפונקציה str_replace קוד:
<?php $str = "yossi dan daniel"; $str = str_replace("yossi", "<a href=\"http://yossi.co.il\">yossi</a>", $str); ?> Last edited by daNN; 09-11-11 at 21:20.. |
09-11-11, 21:41 | # 3 |
Whatever
|
תקרא שוב בבקשה את השאלה... str_replace היא לא הפונקציה הנכונה כאן.
__________________
תומר |
09-11-11, 21:47 | # 4 |
חבר בקהילה
|
צודק. מיהרתי להסיק מסקנות..
אתה מנסה לבדוק אם הוא לא קישור והאמת שנתקלתי במצב כזה בעבר.. - אי אפשר לפתור את זה באמצעות ביטוי רגולרי אחד. אני הייתי פותר את הבעיה בעזרת 3 החלפות וזאת הדרך הפשוטה ביותר לעשות את זה. תחליף את כל המילות יוסי בתור הקישורים באופן זמני ל#יו-סי# (נניח..) - זה הביטוי הרגולרי היחיד שאתה צריך ליישם עכשיו תבצע את ההחלפה שלך - אפשר בעזרת str-replace תחליף בחזרה את הביטוי הזמני ל"יוסי". - אפשר גם בעזרת str-replace |
09-11-11, 21:57 | # 5 |
Whatever
|
היי
איך הפתרון אמור למנוע החלפת המילה לקישור במקרה והיא נמצאת בתוך קישור אחר?
__________________
תומר |
09-11-11, 22:01 | # 6 |
חבר בקהילה
|
הביטוי הרגלורי הראשון אמור למצוא את המילה בתוך הלינק ולשנות אותה לביטוי זמני -> #יו-סי#
הstr_replace שכתבתי ישנה את כל המילות "יוסי" שנשארו ללינקים וידלג על "#יו-סי#" הstr_replace האחרון יהפוך את "#יו-סי#" בחזרה ל"יוסי" |
09-11-11, 22:10 | # 7 |
Whatever
|
הבנתי את הרעיון, את היישום לצערי לא הצלחתי.
תודה על העזרה!
__________________
תומר |
09-11-11, 22:19 | # 8 |
Whatever
|
done, הצלחתי.
תודה!
__________________
תומר |
10-11-11, 00:11 | # 9 |
מנהל פורום, עסק רשום
|
תומר, אשמח אם תוכל לשתף את כולם בפתרון שלך.
בחשיבה זריזה, אני לא מצליח למצא פתרון אחר חוץ מלפרסס (parse) את כל ה-xml/xhtml שלך |
10-11-11, 01:47 | # 10 |
Whatever
|
יגאל, הפתרון הוא מה ש daNN רשם - בהחלט הדרך הכי נכונה לדעתי לעשות את זה. ב regular expression אחד זה בלתי אפשרי (וניסיתי לחפור את כל האינטרנט בשביל זה).
הרעיון הוא להחליף את כל המופעים שנמצאים בין <a></a> של המילה הרצויה במילה זמנית - לדוגמה CHG_THIS אח"כ להחליף את כל המופעים של המילה הרצויה בקישור (str_replace / preg_replace פשוט) בסוף להחזיר את CHG_THIS בחזרה למילה הרגילה - גם preg_replace / str_replace פשוט קוד של +- 4 שורות.
__________________
תומר |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|