PHP: חתוך את הקטע שלך במילה באמצעות strrpos

קוד HTML

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

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

הקוד הישן ייקח תשתית ($ content) מהתו הראשון למספר התווים המרבי שאתה רוצה ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); הד $ תוכן;

הקוד החדש:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); אם ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } הד $ תוכן;

אז הקוד החדש מנתק את התוכן במגבלת התווים שאתה מחפש. עם זאת, השלב הבא הוא לחפש את המרחב האחרון ("") בתוכן. pos $ יהיה בסופו של דבר להיות תפקיד זה. עכשיו, אני פשוט מוודא שיש באמת מקום בתוכן על ידי שאלתי אם $ pos> 0. אם לא, זה פשוט יחתוך את התוכן במספר התווים שביקשתי. אם יש מקום כלשהו, ​​זה יחתוך בחן את התוכן שלי בחלל.

זוהי דרך נחמדה להשתמש בשילוב של מספר התווים המקסימלי וניתוק המילה. מקווה שאתה אוהב!

ואני בטוח שאגלה אם יש פונקציית ASP.NET שעושה את זה ... לא הצלחתי למצוא.

תגובות 7

  1. 1
  2. 2
  3. 3
  4. 4

    אם $content בהתחלה קצר יותר מ-$maxchars, הקוד כפי שנכתב עדיין ייראה מימין לשמאל עבור רווח ויגזור את המילה האחרונה. אתה יכול לשרשר רווח בסוף $content, או לעשות אם (strlen()...)

  5. 5

    נראה שזה עבד כפונקציה (מתייחס להערה הקודמת):

    function showexcerpt($content, $maxchars) {

    if (strlen($content) > $maxchars) {

    $content= substr($content, 0, $maxchars);
    $pos = strrpos($content, " ");

    if ($pos>0) {
    $content = substr($content, 0, $pos);
    }

    החזר תוכן $. "...";

    אחר} {

    חזור תוכן $;

    }

    }

  6. 6

    מה אם הדמות האחרונה שלנו היא תו פיסוק כמו נקודה, סימן קריאה או סימן שאלה? למרבה הצער, קוד זה ימחק את כל המילה שלפני תו הפיסוק האמור.  

    אני חושב שעדיף שתכתוב משהו קצת יותר חזק.

  7. 7

מה אתה חושב?

אתר זה משתמש Akismet כדי להפחית דואר זבל. למד כיצד הנתונים שלך מעובדים.