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 הקוד כפי שנכתב עדיין יראה מימין לשמאל עבור רווח ויחתוך את המילה האחרונה. באפשרותך לשרשר רווח בסוף $ תוכן, או לבצע if (strlen () ...)

  5. 5

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

    פונקציה showexcerpt ($ content, $ maxchars) {

    אם (strlen ($ content)> $ maxchars) {

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

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

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

    אחר} {

    חזור תוכן $;

    }

    }

  6. 6

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

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

  7. 7

מה אתה חושב?

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