הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

סגור את ההודעה
 
כלים לאשכול תצורת הצגה
ישן 09-11-11, 20:39   # 1
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

החלפת מילה בקישור

היי,

הכותרת נשמעת פשוטה- ואכן זו לא בעיה בכלל להחליף מילה במילה אחרת (או בקישור, לצורך העניין). אני צריך משהו קצת אחר ואני לא ממש מוצא פתרון.

אני צריך להחליף מילה (נניח, "יוסי") בקישור (נניח, http://www.yossi.com) - אבל כל עוד המילה היא בפני עצמה ולא חלק מקישור אחר.

נניח במשפט "ליוסי היו ידיים גדולות" - המילה יוסי תוחלף בקישור. במידה והמשפט הוא "ל<a href=......>יוסי</a> היו ידיים גדולות" - המילה יוסי לא תוחלף והקישור יישאר שלם.

למישהו יש רעיון? ניסיתי עם preg_replace ולא הצלחתי כ"כ.


תודה!
__________________
תומר
 
ישן 09-11-11, 21:16   # 2
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 34
הודעות: 178

daNN לא מחובר  

לא לזה משמשים 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
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

תקרא שוב בבקשה את השאלה... str_replace היא לא הפונקציה הנכונה כאן.
__________________
תומר
 
ישן 09-11-11, 21:47   # 4
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 34
הודעות: 178

daNN לא מחובר  

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

אני הייתי פותר את הבעיה בעזרת 3 החלפות וזאת הדרך הפשוטה ביותר לעשות את זה.
תחליף את כל המילות יוסי בתור הקישורים באופן זמני ל#יו-סי# (נניח..) - זה הביטוי הרגולרי היחיד שאתה צריך ליישם
עכשיו תבצע את ההחלפה שלך - אפשר בעזרת str-replace
תחליף בחזרה את הביטוי הזמני ל"יוסי". - אפשר גם בעזרת str-replace
 
ישן 09-11-11, 21:57   # 5
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

היי

איך הפתרון אמור למנוע החלפת המילה לקישור במקרה והיא נמצאת בתוך קישור אחר?
__________________
תומר
 
ישן 09-11-11, 22:01   # 6
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 34
הודעות: 178

daNN לא מחובר  

הביטוי הרגלורי הראשון אמור למצוא את המילה בתוך הלינק ולשנות אותה לביטוי זמני -> #יו-סי#
הstr_replace שכתבתי ישנה את כל המילות "יוסי" שנשארו ללינקים וידלג על "#יו-סי#"
הstr_replace האחרון יהפוך את "#יו-סי#" בחזרה ל"יוסי"
 
ישן 09-11-11, 22:10   # 7
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

הבנתי את הרעיון, את היישום לצערי לא הצלחתי.

תודה על העזרה!
__________________
תומר
 
ישן 09-11-11, 22:19   # 8
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

done, הצלחתי.

תודה!
__________________
תומר
 
ישן 10-11-11, 00:11   # 9
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

תומר, אשמח אם תוכל לשתף את כולם בפתרון שלך.

בחשיבה זריזה, אני לא מצליח למצא פתרון אחר חוץ מלפרסס (parse) את כל ה-xml/xhtml שלך
 
ישן 10-11-11, 01:47   # 10
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

יגאל, הפתרון הוא מה ש daNN רשם - בהחלט הדרך הכי נכונה לדעתי לעשות את זה. ב regular expression אחד זה בלתי אפשרי (וניסיתי לחפור את כל האינטרנט בשביל זה).

הרעיון הוא להחליף את כל המופעים שנמצאים בין <a></a> של המילה הרצויה במילה זמנית - לדוגמה CHG_THIS
אח"כ להחליף את כל המופעים של המילה הרצויה בקישור (str_replace / preg_replace פשוט)
בסוף להחזיר את CHG_THIS בחזרה למילה הרגילה - גם preg_replace / str_replace פשוט

קוד של +- 4 שורות.
__________________
תומר
 
סגור את ההודעה

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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