Robot

Die Zukunft ist hier

Die meiner Meinung nach großartige Entwicklung von KI-Technologien macht diese Seite mittlerweile überflüssig. Künstliche Intelligenzen können heute viele der hier beschriebenen Tipps und Lösungen deutlich effizienter und aktueller bereitstellen.

Aber keine Sorge: Ich bin weiterhin für Sie da! Besuchen Sie mich auf meiner Hauptseite für professionelle Webentwicklung und individuelle Lösungen.

Zu 4uweb.de →

Teaser Text

Will man aus einem langen Text einen Teasertext (Shorttext oder manche sagen auch Anreisser dazu) generieren, kann man z.B. nach 160 Zeichen einfach den Rest wegschneiden und … anhängen. Wenn das aber mitten in einem Wort passiert, ist das eher unschön.

Update!!!

Soeben habe ich ein CSS-Property gesehen, welches diese PHP-Funktion bei diesen Anwendungfall überflüssig macht. Besten Dank an „Unleashed Design„.
Das CSS-Property line-clamp, erfüllt mit den dazugehörigen Attributen alle Anforderungen an einen Teasertext. Sogar die drei Punkte werden automatisch gesetzt bzw. entfernt.

Der textWrapper dient nur zum bestimmen der Größe und kann in diesem Beispiel in der Größe verändert werden.

.textWrapper {
	width: 200px;
	border: 1px solid rgb(75, 75, 75);
	margin: auto;
	padding: 25px;
	resize: both;
	overflow: hidden;
	.line-clamp {
		display: -webkit-box;
		-webkit-line-clamp: 3;
		overflow: hidden;
		-webkit-box-orient: vertical;
	}
}

Und so ging es mit PHP.

$longtext = 'Will man aus einem langen Text einen Teasertext (Shorttext oder manche sagen auch Anreisser dazu) generieren, kann man z.B. nach 160 Zeichen einfach den Rest, wegschneiden und ... anhängen. Wenn das aber mitten in einem Wort passiert, ist das eher unschön.';

$delimiters = array(",",".","|",":"," ","-","/");

$teaser = getTeaserText($delimiters, $longtext, 160);

$badTeaser = substr($longtext, 0, 160);

echo '|'.$badTeaser.'|';
echo '<br />';
echo '|'.$teaser[0].'|';

Erzeugt folgende Ausgabe:

|Will man aus einem langen Text einen Teasertext (Shorttext oder manche sagen auch Anreisser dazu) generieren, kann man z.B. nach 160 Zeichen einfach den Rest, w|

|Will man aus einem langen Text einen Teasertext (Shorttext oder manche sagen auch Anreisser dazu) generieren, kann man z.B. nach 160 Zeichen einfach den Rest, |

Hier die Funktionen dazu:

function getTeaserText($delimiters, $string, $offset) {
	$parts = array();
	$nextPos = strposNext($string, $delimiters, $offset);
	$prevPos = strposPrev(substr($string, 0, $offset), $delimiters);
	$nearbyPrev = $offset - $prevPos;
	$nearbyNext = $nextPos - $offset;
	if($nearbyPrev < $nearbyNext){
		$parts[] = substr($string, 0, $prevPos + 1);
		$parts[] = substr($string, $prevPos + 1);
	}else{
		$parts[] = substr($string, 0, $nextPos + 1);
		$parts[] = substr($string, $nextPos + 1);
	}
	return $parts;
}

function strposPrev($haystack, $needles = array()) {
	$chr = array();
	foreach ($needles as $needle) {
		$first = strripos($haystack, $needle);
		if ($first !== false) {
			$chr[$needle] = $first;
		}
	}
	if (empty($chr)) {
		return false;
	}
	return max($chr);
}

function strposNext($haystack, $needles = array(), $offset = 0) {
	$chr = array();
	foreach ($needles as $needle) {
		$first = strpos($haystack, $needle, $offset);
		if ($first !== false) {
			$chr[$needle] = $first;
		}
	}
	if (empty($chr)) {
		return false;
	}
	return min($chr);
}
Veröffentlicht am
Kategorisiert als php