Ziehen Sie den ersten X Worte (nicht nur Charaktere) von mySQL
Ich würde gerne in der Lage zu ziehen die ersten X Wörter aus einem Datenbank-Feld für die Verwendung in einer Vorschau an. Im Grunde, wenn ein Feld 's-Gehalt war
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris malesuada."
Möchte ich echo
"Lorem ipsum dolor sit amet... see more"
Was ist der beste Weg, dies zu tun?
Das einzige, was ich zu tun ist, ziehen Sie das ganze Feld in einer Abfrage, dann tun Sie etwas, das wie
$foo = [query_results];
$bar = explode(' ', $foo);
for($x=0, $x<6, $x++){
echo $bar[$x];
};
echo "... see more"
Ist es ein besserer Ansatz, um diese?
- angenommen es gibt immer mindestens sechs Wörter?
- Gut, das ist halfassed für die Zeit. Ja, diese Lösung geht davon immer 6 Worte. Ich würde natürlich einige bessere code in das Konto für die Möglichkeit, weniger.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollen Sie auf jeden Fall verwenden SUBSTRING_INDEX zurückgeben wird, die eine Anzahl von Zeichen, bis eine angegebene Anzahl erreicht ist, basierend auf dem vorkommen von Trennzeichen. In Ihrem Fall würde der Aufruf so Aussehen:
In diesem Fall wird die Rückgabe bis zu sechs Worte, wo wir definieren ein Wort, wie ein Satz von Zeichen, die keine Leerzeichen durch ein Leerzeichen voneinander getrennt.
Hinweis: zurückkehren Satzzeichen beigefügt, um das Letzte Wort, die möglicherweise oder möglicherweise nicht gewünscht. Es wäre einfach genug, um zu ersetzen Sie alle Satzzeichen-Zeichen am Ende des Strings in PHP, aber wenn Sie möchten, bleiben Sie vollständig in SQL ich denke, dass Sie verwenden können,TRIM. Die syntax für diese wäre so etwas wie:
Kann es eine bessere option für das entfernen der nachfolgende Satzzeichen-aber vielleicht ist eine andere Frage (ich bin noch auf der Suche nach einer besseren Lösung als SCHNEIDEN).
gut Sie es konnte, Sie in Ihrer Abfrage, mit der substring-Funktion
ist, das Sie die ersten N Buchstaben...
wenn Sie wirklich wollen, bekommen die ersten N Wörter und definieren Sie die Wörter, wie "durch ein Leerzeichen voneinander getrennt", Sie konnte es immer noch tun in der Abfrage wie folgt
CONCAT(SUBSTRING_INDEX(TEXT, ' ', 24), ' ...')
Meine Philosophie ist, nicht in die Datenbank arbeiten zu hart. In meiner Erfahrung, MySQL ist wesentlich schneller, wenn Sie füttern es eine echte einfache Abfrage, und führen Sie dann die "wirkliche" Arbeit mit PHP oder was auch immer Sprache, die Sie verwenden. Ich würde Sie nicht befolgen Sie die Vorschläge gepostet, schnappen Sie sich die ganze Reihe und dann schrumpfen Sie ihn mit Ihrem scripting-Sprache der Wahl. Die einzige Ausnahme wäre, wenn der string kann potentiell sehr groß sein - z.B. 50KB oder mehr. In diesem Fall, dass die Datenbank es schrumpfen für Sie ist vielleicht schneller. Aber wirklich, es sei denn, du machst diese tausenden Abfragen pro Sekunde (und wenn Sie sind, tun Sie es falsch, eine Art von caching), dann ich glaube nicht, dass es irgendeinen Grund zu haben, die Datenbank für Sie tun.
Methode 1 (Besser):
NÖ, Sie könnte auch die substring - Funktion von mysql zu Holen, gewünschten text direkt aus dem Feld.
Prototyp:
Beispiel:
Methode 2:
Können Sie auch unter Verwendung der PHP -
substr
Funktion für den gleichen Zweck, sind aber zuerst müssen Sie den ganzen Feldwert aus der db.In Ihrem Fall:
Ausgabe:
Denke, das wird hilfreich sein, auch. Ich habe es auf meine index Seite zu einem Teil, auf dem die Inhalte mit einem link auf die Hauptseite des Artikels.
Tou können Sie ersetzen Sie X in der substring-Klausel, durch die Zeichen, die Sie anzeigen müssen.