לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #20  
ישן 31-12-2005, 22:14
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 19 שנכתבה על ידי KingYes שמתחילה ב "כן כן.. אני יודע שצריך להשתמש..."

את הדוגמא שלי לא בדקתי, היא פשוט היתה בשביל סוג של הדגמה...

מה לא ברור ממנה? הוא לוקח את כל הרווחים שנמצאים בין > < ומחליף אותו ב&nbsp;
זה עושה בדיוק את מה שאתה רוצה... האמת כשאני חושב על זה עכשיו הוא לא כל כך טוב, כי הוא יחליף לך את כל מה שנמצא גם בין <html> ל <html>

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


אם אתה רוצה פתרון מובן יותר, אתה יכול לעשות כך.
קוד PHP:
 preg_match_all("@>[^<]*<@s"$str$matches);
foreach(
$matches as $key => $value)
    
$rmatches[$key] = str_replace(" ","&nbsp;",$value);
str_replace($matches[0],$rmatches[0],$str); 

שוב, לא בדקתי... אז
מה אכפת לך לנסות חוצמזה

נערך לאחרונה ע"י GreenBerret בתאריך 31-12-2005 בשעה 22:24.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #24  
ישן 01-01-2006, 20:34
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 23 שנכתבה על ידי KingYes שמתחילה ב "תודה רבה. דווקא הקוד עושה את..."

אממ, כן... זה אכן יאריך את זמן הרינדור של הדף.

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

יש לך שתי אפשרויות, תבחר מה שנוח לך

1.
קוד PHP:
 preg_match_all("@>[\w\s^<]+<@"$str$matches);
foreach(
$matches[0] as $key => $value)
    if(!
strstr($value" "))
        unset(
$matches[0][$key]);

$rmatches[0] = array();
foreach(
$matches[0] as $key => $value)
    
$rmatches[0][$key] = str_replace(" ","&nbsp;",$value); 


2. שהיא שונה טיפה, כי היא לא מסננת את מה שאין לו רווח (שוב הראשון היה למטרות בדיקה כדי לראות איך באמת לעשות את זה, בגלל זה הגעתי לסינון מה שאין לו רווח).
קוד PHP:
 preg_replace("@>([\w\s^<]+)<@e""chr(62).str_replace(' ', chr(38).'nbsp'.chr(59), '\${1}').chr(60)"$str 
);


התוצאות של הראשון, "שפכתי" את המשתנה שהתקבל מיד לאחר ההרצה:
קוד:
Srouce: " <table bgcolor=\"red\"> <tr> <td width=\"100\"> Bla Bla Bla <br /><br />this is another test<br /> <br />this is a test<br /> </td> </tr> </table> " Result: Array ( [0] => > < [1] => > < [2] => > Bla Bla Bla < [3] => >this is another test< [4] => > < [5] => >this is a test< [6] => > < [7] => > < [8] => > < )


אם תשים לב, הוא לוקח את כל התגיות הנגדיות שיש ביניהן שבירות שורה כאילו שהן היו רווח (משום מה)...

נערך לאחרונה ע"י GreenBerret בתאריך 01-01-2006 בשעה 20:44.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #25  
ישן 02-01-2006, 00:39
  GreenBerret GreenBerret אינו מחובר  
 
חבר מתאריך: 13.12.05
הודעות: 1,963
בתגובה להודעה מספר 24 שנכתבה על ידי GreenBerret שמתחילה ב "אממ, כן... זה אכן יאריך את..."

מסתבר שאכן preg_replace יותר מהיר.

מצטער שאני מקפיץ זה פשוט מעניין אותי

אלו התוצאות שקיבלתי:
קוד:
Compiling function.microtime.php.htm: 70978 chars Compilation of function.microtime.php.htm using preg_match_all took: 0.409258842468 Compilation of function.microtime.php.htm using preg_replace took: 0.0645079612732

ואלו הסקריפטים:
קוד PHP:
 preg_match_all("@>[^<]+<@"$str$matches);
foreach(
$matches[0] as $key => $value)
    if(!
strstr($value" "))
        unset(
$matches[0][$key]);

$rmatches[0] = array();
foreach(
$matches[0] as $key => $value)
    
$rmatches[0][$key] = str_replace(" ","&nbsp;",$value);
$test1 str_replace($matches[0],$rmatches[0],$str); 


קוד PHP:
 $test2 preg_replace("@(>[^<]+<)@e""str_replace(' ', chr(38).'nbsp'.chr(59), '\${1}')"$str); 

נ.ב. יש לי מחשב לא משהו, אלו תוצאות יותר קצת יותר מהימנות משרת שהוא באמת שרת (ולא מחשב אישי ).
קוד:
Compiling function.microtime.php.htm: 70978 chars Compilation of function.microtime.php.htm using preg_match_all took: 0.194123 Compilation of function.microtime.php.htm using preg_replace took: 0.048467


עריכה: אופס, טעות בכפתור תגובה...
ד"א: שים לב שזו פונקציה מעודכנת, שמתי את כל המידע ב"preg_replace" בתוך back-reference... מסתבר שזה קצת יותר מהיר.

נערך לאחרונה ע"י GreenBerret בתאריך 02-01-2006 בשעה 00:42.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:01

הדף נוצר ב 0.09 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר