Wie man Text in PHP einfach abschneidet
Wenn Sie WordPress ausschließlich als Blogging-Anwendung oder sogar im liberaleren Sinne als Content-Management-System behandeln, dann sind Sie wahrscheinlich daran gewöhnt, den Editor oder das Auszugsfeld zu verwenden, um einen Teaser zu schreiben und dann einen Weiterlesen-Link einzufügen.
WordPress für Webanwendungen (wieder)
Für diejenigen, die diese Seite schon eine Weile lesen, ich interessiere mich speziell für die Verwendung von WordPress als Grundlage für die Entwicklung von Webanwendungen (siehe auch this, this, this und this ).
Zum Zeitpunkt dieses Beitrags ist dies ein Artikel, der ungefähr sechs Jahre alt ist.
Daher kann es vorkommen, dass der Inhalt, den Sie auf dem Front-End rendern, möglicherweise von einer Drittanbieterquelle stammt.
Zurück zum Inhalt
Das heißt, die Anwendung funktioniert wie folgt:
- eine Drittanbieter-API kontaktieren,
- Daten aus dem Anruf importieren und bei Bedarf parsen,
- in die Datenbank schreiben,
- Rendern Sie die Informationen auf dem Front-End, wenn Sie dazu aufgefordert werden.
Es gibt eine Menge, was zwischen den oben genannten Schritten passieren kann, aber das Wichtigste, was ich in diesem Beitrag teilen möchte, ist eine effektive Möglichkeit, Text mit PHP einfach zu kürzen, um ihn auf dem Front-End zu rendern.
Dies ist nützlich, um Teaser bereitzustellen, auf Websites von Drittanbietern zu verlinken und vieles mehr, ohne Inhalte manuell schreiben oder bearbeiten zu müssen.
Um einen Beispielanwendungsfall für die Funktion zu geben, die ich teilen werde, ist es nützlich, einige Anforderungen zu haben. Sie sind für diesen Beitrag willkürlich, aber die Umsetzung sollte so konkret sein, dass Sie dies problemlos in den Beitrag einfügen können.
Angenommen:
- wir ziehen Text von einer Drittanbieter-API,
- die Daten werden irgendwo in der Datenbank gespeichert,
- die Daten sind Klartext (kein Markup oder andere Arten von webbasierten Entitäten in der Struktur),
- Wir brauchen eine Funktion, die den Text akzeptiert, und eine Länge, um den Text zu kürzen.
Angesichts dieser Anforderungen können wir eine Funktion einrichten, die Text und eine Länge von Argumenten akzeptiert. Wenn der Text kleiner oder gleich der angegebenen Länge ist, gibt es nichts zu tun; Andernfalls können wir den Text auf die angegebene Länge kürzen und abschließende Ellipsen hinzufügen.
<?php
/**
* Truncates the specified text to the specified length to the last whole word and
* adds ellipses to the end of the truncated string.
*
* @param string $text The text to truncate.
* @param int $length The maximum allowed length of the text.
* @return string The text if it's less than the length of the specified length or the text truncated to the specified length.
*/
public function truncate($text, $length)
{
if ($length >= strlen($text)) {
return $text;
}
return preg_replace(
"/^(.{1,$length})(s.*|$)/s",
'1...',
$text
);
}
Implementierungen dafür im Kontext von WordPress könnten aus dem Lesen von Daten stammen, die in benutzerdefinierten Tabellen, in den Post-Metadaten, in der Post-Tabelle oder im Grunde an jedem Ort gespeichert sind, an dem Rohtext gespeichert ist und Sie ihn auf dem Frontend rendern möchten .
Sollten im Text andere Inhalte wie HTML oder andere Entitäten vorhanden sein, müssen ggf. Anpassungen vorgenommen werden. Wenn es sich um WordPress handelt, gibt es Filter und andere Formen der Verarbeitung dieser Daten vor dem Abschneiden des Textes, aber das geht über das einfache Abschneiden von Text in PHP hinaus, oder?
Verwenden Sie dies also zumindest nur für Text und berücksichtigen Sie höchstens andere Arten von Inhalten im Text, bevor Sie ihn an preg_replace übergeben, und Sie sollten bereit sein.