Schneiden Sie den Text auf 340 Zeichen

8

Ich ziehe Blogposts aus einer Datenbank. Ich möchte den Text auf eine maximale Länge von 340 Zeichen zuschneiden.

Wenn der Blogeintrag mehr als 340 Zeichen umfasst, möchte ich den Text auf das letzte vollständige Wort zuschneiden und am Ende '...' hinzufügen.

%Vor%     
CLiown 20.01.2010, 20:21
quelle

9 Antworten

11

Die anderen Antworten zeigen Ihnen, wie Sie den Text grob 340 Zeichen machen können. Wenn das für Sie in Ordnung ist, verwenden Sie eine der anderen Antworten.

Wenn Sie jedoch ein sehr striktes Maximum von 340 Zeichen wünschen, funktionieren die anderen Antworten nicht. Sie müssen daran denken, dass das Hinzufügen von '...' die Länge der Zeichenfolge erhöhen kann, und Sie müssen dies berücksichtigen.

%Vor%

Beachten Sie auch, dass ich hier die Überladung von strrpos verwende, die einen Offset verwendet, um direkt an der richtigen Stelle in der Zeichenfolge zu suchen, anstatt zuerst die Zeichenfolge zu verkürzen.

Sehen Sie, wie es online funktioniert: ideone

    
Mark Byers 20.01.2010, 20:30
quelle
26

Es sieht so aus, als würden Sie zuerst den Text auf 340 Zeichen genau abschneiden, dann die Position des letzten '' in der Zeichenfolge finden und auf diesen Betrag reduzieren. So:

%Vor%     
Nicholas Flynt 20.01.2010 20:26
quelle
14

Wenn Sie die mbstring-Erweiterung aktiviert haben (die sich heutzutage auf den meisten Servern befindet), können Sie die Funktion mb_strimwidth verwenden.

%Vor%     
onokazu 07.06.2014 05:31
quelle
7

versuchen:

%Vor%     
John Conde 20.01.2010 20:26
quelle
2

Ich gebe die Antwort von John Conde in einer Methode an:

%Vor%

Beispiele:

%Vor%     
Sebastian Hojas 15.02.2013 14:22
quelle
0

Sie können versuchen, Funktionen, die mit PHP geliefert werden, wie Wordwrap

zu verwenden %Vor%     
ghostdog74 21.01.2010 01:22
quelle
0

Funktion trim_characters ($ text, $ length = 340) {

%Vor%

}

Verwenden Sie diese Funktion trim_characters (), um eine Reihe von Wörtern auf eine bestimmte Anzahl von Zeichen zuzuschneiden. Ich denke, das ist hilfreich für dich.

    
sjkon 01.11.2012 11:47
quelle
0

Warum so?

  • Ich mag die regex Lösung über Teilstring , um andere als Leerzeichen Leerzeichen (Interpunktion etc.)
  • abzufangen
  • John Condoes Lösung ist nicht vollkommen korrekt, da der Text auf 340 Zeichen gekürzt und dann das letzte Wort beendet (also oft länger als gewünscht ist)

Aktuelle regex Lösung ist sehr einfach:

%Vor%

Die vollständige Methode in PHP könnte so aussehen:

%Vor%

Weitere Erklärung:

  • $shownLength ist sehr strikt einzuhalten (wie Mark Byers erwähnt)
  • Ausnahme wird ausgelöst, wenn die angegebene Länge zu klein ist
  • \w\b part soll Leerzeichen oder Interpunktion am Ende vermeiden (siehe 1 unten)
  • Falls das erste Wort länger als die gewünschte maximale Länge ist, wird dieses Wort brutal geschnitten
  1. Trotz der Tatsache, dass das fragliche Ergebnis In the ... als gewünscht beschrieben wird, fühle ich In the... ist glatter (auch nicht wie In the,... etc.)
D. Cichowski 05.02.2016 14:02
quelle
0

Einfachste Lösung

%Vor%

Für Multi-Byte-Text

%Vor%     
rahul sharma 23.05.2017 11:38
quelle

Tags und Links