2012-03-30 5 views
1

Berechnen der Anzahl der Zeilen von Text in einem Div auf PHP-Server-Seite

Ich stieß auf ein seltsames Problem, mit dem ich ein Problem habe. Ich habe Texte, die ich aus der Datenbank ohne Zeichenbegrenzung erhalte. Was ich versuche zu erreichen, ist diese Anzahl von Zeilen, wenn dieser Text in eine div-Breite CSS-Eigenschaft eingefügt wird;

width:600px

Klingt komisch, aber ich brauche diese Server-Seite zu verwalten, weil ich meinen Stil arrangieren werde, bevor sie auf der Seite gedruckt werden, so dass, wenn die Anzahl der Zeilen auf Serverseite berechnet weniger als 10 ist, werde ich etwas arrangieren in gewisser Weise, wenn es mehr als 10 ist, werde ich einen anderen Weg gehen. Gibt es einen möglichen Weg dies zu erreichen?

+0

Können Sie Javascript nicht benutzen? – gosukiwi

+1

Die Anzahl der Zeilen hängt auch von der Schriftart, Schriftgröße und dem Buchstabenabstand des Textes ab. Daher werde ich dieser Lösung nicht folgen, da Sie auf der Clientseite so viele Unbekannte haben, dass die Anzahl der Zeilen vor dem Senden und Rendern im Browser nicht genau untersucht werden konnte. – Daxcode

+0

@Daxcode danke für die heads-up. Schriftgröße: 14px, Schriftfamilie: Arial. – Ali

Antwort

1

Prüfen imagettfbbox() Funktion. Er berechnet die Breite der Zeichenfolge in Pixel. Entferne zuerst neue Zeilen aus deinem Text und berechne dann die gesamte Textlänge, als in 600px. Sie erhalten die Anzahl der Zeilen. Aber das ist kein Weg vorgeschlagen. Versuchen Sie besser, css oder Javascript für dieses

+0

Vielen Dank für die schnelle Antwort. Ich werde es jetzt überprüfen! – Ali

0

zu benutzen Tun Sie nicht diese Serverseite. Es gibt aufzählbare clientseitige Einstellungen und Optionen, die dies beeinflussen, und eine serverseitige Lösung wird niemals in allen Fällen richtig funktionieren. Mit JavaScript wäre es trivial, die Anzahl der Zeilen basierend auf der gerenderten Höhe dividiert durch die Zeilenhöhe zu berechnen.

var lines = $('#somediv').height()/$('#somediv').css('line-height'); 
Verwandte Themen