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

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



  #1  
ישן 03-11-2011, 15:57
  משתמש זכר tsachibenezra tsachibenezra אינו מחובר  
 
חבר מתאריך: 06.06.07
הודעות: 749
ספירת תווים

מה המצב

יש לי את הפונקציה הבאה

היא סופרת תווים ומחזירה את אורך המחרוזת לפי הדרישה

למה אני מקבל אורכים שונים בין עברית לאנגלית

תודה

קוד PHP:
 public function char_limit($str$n 500$end_char '…')
    {
        
$search = array("/\s{2,}/""/\n/""/\r/");
        
$replace = array(" "" "" ");
        
        
$str preg_replace($search$replace$str);
        
        if (
strlen($str) < $n)
        {
            return 
$str;
        }
    
        
$out "";
        foreach (
explode(" "trim($str)) as $key => $val)
        {
            if(
$key 0)
            {
                
$out .= ' ';
            }
            
            
$out .= $val;

            if (
strlen($out) >= $n)
            {
                break;
            }
        }
        
        
$out trim($out);
        return 
$out.$end_char;
    } 

נערך לאחרונה ע"י tsachibenezra בתאריך 03-11-2011 בשעה 16:00.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 03-11-2011, 16:50
  משתמש זכר tsachibenezra tsachibenezra אינו מחובר  
 
חבר מתאריך: 06.06.07
הודעות: 749
בתגובה להודעה מספר 5 שנכתבה על ידי tsachibenezra שמתחילה ב "תודה"

מה אתה אומר עכשיו זה יהיה בסדר??

קוד PHP:
 public function char_limit($str$n 500$end_char '…')
    {
        
$search = array("/\s{2,}/""/\n/""/\r/");
        
$replace = array(" "" "" ");
        
        
$str preg_replace($search$replace$str);
    
        
$i 0;
        
$out "";
        foreach (
explode(" "trim($str)) as $key => $val)
        {
            if(
$key 0)
            {
                
$out .= ' ';
            }
            
            
$out .= $val;

            
$i += mb_strlen($val);
            
            if (
$i >= $n)
            {
                break;
            }
        }
        
        
$out trim($out);
        return 
$out.$end_char;
    } 
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 04-11-2011, 12:20
צלמית המשתמש של asx
  משתמש זכר asx asx אינו מחובר  
 
חבר מתאריך: 07.10.04
הודעות: 373
בתגובה להודעה מספר 10 שנכתבה על ידי tsachibenezra שמתחילה ב "האמת שחשבתי על זה בגלל זה..."

אני ניסיתי אז משהו קצת שונה, העתקתי את המשתנה למשתנה חדש, הוספתי לו strip_tags. עכשיו יש לי בעצם משתנה אחד נקי משתנה נוסף "מלא" עם הטאגיות והכל. על המשתנה הנקי עשיתי mb_count_words בכדי למצוא את מספר המילים במשתנה, מחליט על מספר מילים מקסימלי, שומר את המילה האחרונה ומחפש את המיקום שלה במשתנה המלא. מנקה את המשתנה המלא עד אותה מילה ואחר כך סוגר את הטאגיות הפתוחות שנוצרו עקב ה"שבירה" (מצאתי בגוגל די מהר פונקציה מוכנה http://stackoverflow.com/questions/...tag-in-a-string).

הבעיה שאני מתבסס פה על מילה ואני יכול ליפול על מילה כמו "אני" שתהיה גם בשורה הראשונה והכל הלך לפח.
אני מאמין שהכיוון שלי נכון, צריך לייעל את זה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 06-11-2011, 11:16
  משתמש זכר tsachibenezra tsachibenezra אינו מחובר  
 
חבר מתאריך: 06.06.07
הודעות: 749
בתגובה להודעה מספר 11 שנכתבה על ידי asx שמתחילה ב "אני ניסיתי אז משהו קצת שונה,..."

טוב זה מה שיצא לי

זה משהו מאוד בסיסי... אני חושב שצריך גם להסיר את כל
קוד PHP:
 <br /> 


מה אתם אומרים

קוד PHP:
 function test()
    {
        
header('Content-Type: text/html; charset=utf-8');
        
$str "     נחל שניר <strong class='bla'>הוא הארוך בין שלושת יובלי נהר הירדן. חלקו של הנחל הזורם<img /> בסמוך לקיבוץ מעיין
                 ברוך, נמצא<br/> בתחומי שמורת</strong> טבע נחל שניר, ומציע למטי - ילים בגליל העליון מסלול מהנה במיוחד"
;
        
//$str = "Lorem Ipsum is <strong class='bla'>simply dummy<img /> text of <b>the           printing</b> and typesetting 
                //industry. <br /> Lorem Ipsum has been</strong> the industry";
        
$str trim($str);
        
$n 101;
        
$end_char '…';
        
        
$search = array("/\r/""/\n/""/\t/");
        
$replace = array(" "" "" ");
        
$str preg_replace($search$replace$str);
        
        
$search = array(" ");
        
$replace = array("***");
        
$str str_replace($search$replace$str);
    
        
$search = array("#[***]{1,}#");
        
$replace = array(" ");
        
$str preg_replace($search$replace$str);
        
        
$i 0;
        
$out "";
        
        
$htmlOn false;
        
$html = array();
        
$var '';
        
        
$strA =  preg_split('/(?<!^)(?!$)/u'$str );
        
        foreach (
$strA as $key => $value)
        {
            if(
$value === '<' && isset($strA[$key+1]) && $strA[$key+1] === '/')
            {
                if(!empty(
$html))array_pop($html);
                
$out .= $value;
                continue;
            }
            elseif(
$value === '<')
            {
                
$htmlOn true;
                
$out .= $value;
                continue;
            }
            if(
$htmlOn)
            {
                
$out .= $value;
                if(
$value === '>')
                {
                    if (isset(
$strA[$key-1]) && $strA[$key-1] !== '/'
                    {                                    
                        
array_push($htmltrim($var));
                    }
                    
$htmlOn false;
                    
$var '';
                }
                else
                {
                    
$var .= $value;
                }
            }
            else 
            {
                
$out .= $value;                
                if(
$i == $n)
                {
                    foreach (
array_reverse($html) as $v)
                    {
                        
$tag explode(' '$v);
                        
$out .= '</'.$tag[0].'>';
                    }
                    break;
                }
                else 
                {
                    
$i++;        
                }
            }
        }

        
var_dump(trim($out));
    } 

נערך לאחרונה ע"י tsachibenezra בתאריך 06-11-2011 בשעה 11:32.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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