PHP: Schneiden Sie Ihren Auszug beim Wort mit strrpos ab

HTML Quelltext

Wenn Sie mit PHP arbeiten und nur einen Auszug aus Ihrem Quelltext anzeigen und bei einer Anzahl von Zeichen abschneiden möchten, kann Ihr Auszug hässlich aussehen, wenn er in der Mitte der Zeichenfolge ausgeführt wird. Ich musste eine Funktion schreiben, um dies in ASP und in ASP.NET zu tun, die im Grunde vom letzten Zeichen zurückging, um das letzte Leerzeichen zu finden und es dort abzuschneiden. Irgendwie böse und ein bisschen übertrieben. Sie können dies tatsächlich in Aktion bei mir zu Hause sehen ! wo ich nur die ersten 500 Zeichen zur Verfügung stelle.

Ich war voll und ganz darauf vorbereitet, heute dieselbe Funktion mit PHP zu entwickeln, stellte jedoch (wie üblich) fest, dass PHP eine Funktion hat, die dies bereits tut. strrpos.

Der alte Code nimmt eine Teilzeichenfolge ($ content) vom ersten Zeichen bis zur maximal gewünschten Anzahl von Zeichen ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); echo $ content;

Der neue Code:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ content;

Der neue Code schneidet also zuerst den Inhalt an der gesuchten Zeichenbeschränkung ab. Der nächste Schritt besteht jedoch darin, nach dem letzten Leerzeichen ("") im Inhalt zu suchen. $ pos wird diese Position sein. Jetzt stelle ich einfach sicher, dass der Inhalt tatsächlich ein Leerzeichen enthält, indem ich frage, ob $ pos> 0 ist. Wenn dies nicht der Fall ist, wird der Inhalt nur mit der Anzahl der von mir angeforderten Zeichen abgeschnitten. Wenn es einen Platz gibt, wird mein Inhalt an der Stelle elegant abgeschnitten.

Dies ist eine gute Möglichkeit, die Kombination aus der maximalen Anzahl von Zeichen und dem Abschneiden beim Wort zu verwenden. Hoffe du magst!

Und ich bin sicher, ich werde herausfinden, ob es eine ASP.NET-Funktion gibt, die dies tut ... Ich konnte keine finden.

7 Kommentare

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

    Wenn $ content anfangs KURZER als $ maxchars ist, sucht der geschriebene Code immer noch von rechts nach links nach einem Leerzeichen und schneidet das letzte Wort aus. Sie können entweder ein Leerzeichen am Ende von $ content verketten oder ein if (strlen ()…) ausführen.

  5. 5

    Dies schien als Funktion zu funktionieren (unter Berücksichtigung des vorherigen Kommentars):

    Funktion showexcerpt ($ content, $ maxchars) {

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

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

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

    $ content zurückgeben. "...";

    } Else {

    gib $ content zurück;

    }

    }

  6. 6

    Was ist, wenn unser letztes Zeichen ein Interpunktionszeichen wie ein Punkt, ein Ausrufezeichen oder ein Fragezeichen ist? Leider löscht dieser Code das gesamte Wort vor dem Interpunktionszeichen.  

    Ich denke, Sie sollten besser etwas Robusteres schreiben.

  7. 7

Was denken Sie?

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.