Seite 1 von 1

title kürzen

Verfasst: 12.02.2011, 13:38
von jvedat
Servus Freunde der Abakus Gemeinschaft,
auf meinen Seiten habe ich das mal verändert:
$meta_title = substr($meta_title, 0, 66);

Jedoch schneidet es abrubt ab, was im grundegenommen richtig ist aber kann mann es noch verbessern sodass das letzte Wort komplett ausfällt wenn es abgeschnitten wird?
im Beispiel sieht das letzte Wort Uhren "Uhre" aus was unschön ist. könnte natürlich von 66 auf 67 hoch aber wird halt dann woanders wieder nicht passen.. für ne kleine Hilfestellung wäre ich dankbar.

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Verfasst: 12.02.2011, 13:59
von Synonym
Theoretisch ist es nur eine Kombination aus substr, strpos und wordwrap.....

Markierung in Zeichenkette setzen. (wordwrap)
Länge bis zur Markierung prüfen. (strpos)
Zu lang -> dann letzte Wort entfernen bzw, alles davor auswählen. (substr)

Verfasst: 12.02.2011, 14:02
von Dr. Udo Brömme
Denk halt ein bisschen nach und bastel dir was.
Ich würde es so machen:
Zuerst den String auf 67 Zeichen kürzen (nötig falls tatsächlich genau nach 66 Zeichen ein Wort zu ende ist), dann das letzte Leerzeichen im String finden und an dieser Stelle nochmal abschneiden.


edit: synonym war schneller, finde meine variante aber schöner :P

Verfasst:
von

Verfasst: 12.02.2011, 14:06
von Synonym
@Dr. Brömme
Dann kann man sich das vorherige Abschneiden aber sparen.

Länge 100
Links 66 - rechts 34
Von rechts nun nach dem ersten Leerzeichen ab Pos -34 suchen und abschneiden.

Verfasst: 12.02.2011, 14:09
von Dr. Udo Brömme
Synonym hat geschrieben:@Dr. Brömme
Dann kann man sich das vorherige Abschneiden aber sparen.

Länge 100
Links 66 - rechts 34
Von rechts nun nach dem ersten Leerzeichen ab Pos -34 suchen und abschneiden.
ja hast recht, auch möglich und evtl. ein klein wenig ressourcenschonender...

Verfasst: 12.02.2011, 14:47
von t-rex
Hi,

ich würde den String mit explode anhand von Leerzeichen aufsplitten. Und dann die Wörter wieder in einer Schleife so lange zusammen fügen, bis ich die gewünschte Länge erreicht habe.

Code: Alles auswählen

<?
$words = explode&#40;' ', $title&#41;;
$title = '';
foreach&#40;$words as $word&#41; &#123;
  $title .= $word;
  if &#40;strlen&#40;$title&#41; >= 66&#41; &#123;
    break;
  &#125;
&#125;
?>
Sonnige Grüsse
HaPe

Verfasst: 12.02.2011, 14:52
von Synonym
Das ist aber so nicht ganz richtig, denn dann kann der String länger als 66 Zeichen sein. Wenn schon, dann vorher die aktuelle Länge mit der Länge des Wortes addieren. Wenn dann weniger oder gleich 66, dann erst das Wort anhängen.

Verfasst: 14.02.2011, 18:11
von jvedat
funktioniert wunderbar jedoch die Ausgabe des titels ist komplett ohne leerzeichen.. wo steckt da der Wurm?

Verfasst: 14.02.2011, 18:49
von Dr. Udo Brömme
jvedat hat geschrieben:funktioniert wunderbar jedoch die Ausgabe des titels ist komplett ohne leerzeichen.. wo steckt da der Wurm?

Code: Alles auswählen

<? 
$words = explode&#40;' ', $title&#41;; 
$title = ''; 

for &#40; $i = 0; $i <= count&#40;$words&#41;; $i += 1&#41; &#123;
  
  if &#40;&#40;strlen&#40;$title&#41; + strlen&#40;$words&#91;$i&#93;&#41;&#41; >= 66&#41; &#123; 
        break; 
  &#125;

  $title .= $words&#91;$i&#93;; 
  $title .= ' ';
  
   
&#125; 
?>

(nicht getestet)

Verfasst: 14.02.2011, 19:00
von jvedat
$words = explode(' ', $meta_title);
$meta_title = '';
foreach($words as $word) {
$meta_title .= $word;
if (strlen($meta_title) >= 55) {
break;
}
$meta_title .= $words[$i];
$meta_title .= ' ';
}

############somit abgehakt ;) danke!!