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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 11-08-12, 16:22   # 1
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

שאלה | איך לעשות את זה ללא תוספות לשרת..

היי,

נתקלתי במשהו שקשה לבצע,

אם אני לא אמצא פתרון פשוט יותר, אני יתחיל לכתוב פונקצייה של שעות (ולשבור תראש ><)

בכל מקרה, הבעיה היא כזו:

יש לי קוד XML כזה:
HTML קוד:
<some do="color">
	<some do="font">
		<some do="size">
			Hey
		</some>
	</some>
</some>
אני צריך להפוך אותו ל:
HTML קוד:
<some do="color">
	[font]
		<some do="size">
			Hey
		</some>
	[/font]
</some>
ניסיתי דרך REGEX, אבל זה לא יפעל:
PHP קוד:
preg_replace("/<some do=\"font\">(.+?)<\/some>/is""[font]\\1[/font]"$xml); 
וזה לא יפעל בגלל שעשיתי
קוד:
(.+?)
ואם אני יוריד את הסימה שאלה, זה יחליף את האחרון

דרך אגב, במקרה הזה יש שימוש ב3 תגים של some אבל לפעמים יש יותר .. (או פחות)

פתרונות ?
  Reply With Quote
ישן 11-08-12, 16:54   # 2
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

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

כיוון אחר אולי, זה לחלק את כל הסטרינג למערך של תגיות פותחות (כל אחד מה-some יהיו תא במערך) ומערך של תגיות some סוגרות.
לבצע את החיפוש על המערך הזה, ולפי האינדקס שבו מצאת, להחליף גם במערך של התגיות הסוגרות.
  Reply With Quote
ישן 11-08-12, 17:47   # 3
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

למה הכוונה בgroup שם REGEX ?

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

השאלה היא, האם יש משהו יותר שימושי?

תודה
  Reply With Quote
ישן 11-08-12, 18:34   # 4
DoLet
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2011
הודעות: 301

DoLet לא מחובר  

תנסה אולי לבדוק שימוש ב-SimpleXML.
  Reply With Quote
ישן 11-08-12, 20:21   # 5
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

יש שם מצב לקוד לא תקין? כלומר, דברים שלא סגורים נכון? למרות שאתה יכול לעשות גם לזה בדיקה
אבל לדעתי הדרך של יגאל די נוחה במקרה הזה, אתה בונה מערך (preg_match_all) מהתגיות פתיחה, בונה עוד מערך מהתגיות סגירה (פה אתה יכול לבדוק אם הכמות איברים זהה ולדעת גם אם יש דברים לא סגורים)
ואז אתה מחפש את <some do="font">, ברגע שנתקלת בו אתה מחליף באותו אינדקס במערך של התגיות סגירה את התגית ל-[/font] ויוצא מהלולאה

ד"א - כדאי לך לשאול גם ב-StackOverflow הגיוני שיש ביטוי רגולארי שיתאים לזה יותר
  Reply With Quote
ישן 11-08-12, 22:03   # 6
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

ציטוט:
נכתב במקור על ידי Itay צפה בהודעה
יש שם מצב לקוד לא תקין? כלומר, דברים שלא סגורים נכון? למרות שאתה יכול לעשות גם לזה בדיקה
אבל לדעתי הדרך של יגאל די נוחה במקרה הזה, אתה בונה מערך (preg_match_all) מהתגיות פתיחה, בונה עוד מערך מהתגיות סגירה (פה אתה יכול לבדוק אם הכמות איברים זהה ולדעת גם אם יש דברים לא סגורים)
ואז אתה מחפש את <some do="font">, ברגע שנתקלת בו אתה מחליף באותו אינדקס במערך של התגיות סגירה את התגית ל-[/font] ויוצא מהלולאה

ד"א - כדאי לך לשאול גם ב-StackOverflow הגיוני שיש ביטוי רגולארי שיתאים לזה יותר
אין לזה ביטוי רגולארי..

בכל מקרה, הדוגמה שהבאתי כאן היא דוגמה פשוטה לbbcode parser
הקטע שהבאתי עם התגיות הוא שלפעמים יש שימוש ב span ל font-family , color או font-size

וזה יוצר בעיות שזה מחליף בצורה שזה מחליף

בכל מקרה, אני אלך על הפונקצייה שרשמתי, אני אנסה לבנות אותה

תודה לכולם אם למישהו יש פתרון, שישלח לי ה"פ
  Reply With Quote
ישן 12-08-12, 09:15   # 7
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי HHaim צפה בהודעה
למה הכוונה בgroup שם REGEX ?
הכוונה היא לזה:
http://www.regular-expressions.info/brackets.html
כשאתה עוטף כל match בסוגרים עגולים, ואח"כ אתה יכול לעשות Backreferences.


ציטוט:
נכתב במקור על ידי HHaim צפה בהודעה
אין לזה ביטוי רגולארי..

בכל מקרה, הדוגמה שהבאתי כאן היא דוגמה פשוטה לbbcode parser
הקטע שהבאתי עם התגיות הוא שלפעמים יש שימוש ב span ל font-family , color או font-size
אם זה פארסר ל-bbcode, אולי שווה לחפש מימושים של זה במקומום אחרים. כלומר לראות איך הפורומים השונים מתמודדים עם הנושא הזה.


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

אם אתה מוצא פתרון אלגנטי כלשהו, אשמח אם תביא אותו לפה כדי שנלמד
  Reply With Quote
ישן 12-08-12, 16:13   # 8
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

ציטוט:
נכתב במקור על ידי IgalSt צפה בהודעה
הכוונה היא לזה:
http://www.regular-expressions.info/brackets.html
כשאתה עוטף כל match בסוגרים עגולים, ואח"כ אתה יכול לעשות Backreferences.




אם זה פארסר ל-bbcode, אולי שווה לחפש מימושים של זה במקומום אחרים. כלומר לראות איך הפורומים השונים מתמודדים עם הנושא הזה.


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

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

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

הפונקציה לא על המחשב הזה ..

בכל מקרה, תודה לכולם..
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 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. הזמן כעת הוא 13:58.

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