Str nach 20 Zeichen abschneiden

PHPneu1

Mitglied
Hallo Forum

habe einen String den ich nach, wenn dieser mehr als 20 Zeichen hat abschneiden und '...' anhängen möchte.

Hab den Code so aufgebaut:

PHP:
$test = "Dies ist ein Test und braucht einen Cut.";
if(strlen($test > 20))
{
echo substr($test,0,20)."...";
}
else
{
echo $test;
}

Leider klappt dies nicht. Es wird der ganze Satz ausgegeben.
Wo liegt da der Fehler?

Danke für die Hilfe.
Gruss
 
Versuch es mal so:

PHP:
 $test = "Dies ist ein Test und braucht einen Cut.";
if(strlen($test > '20'))
{
echo substr($test,0,20)."...";
}
else
{
echo $test;
}
 
Hi!

Schau' dir doch mal die if-Abfrage an:

PHP:
if(strlen($test > 20))

Das sollte wohl heissen:

PHP:
if(strlen($test) > 20)

Und mach da bloß keine Anführungszeichen um die 20!
StrLen gibt nämlich einen Integer-Wert zurück, somit wäre die String '20' falsch.
Das Endergebnis sollte dann so funktionieren:

PHP:
<?php
$test = "Dies ist ei nTest und braucht einen Cut.";
$test = ( strlen ( $test ) > 20 ? substr ($test, 0, 20) . '...' : $test );

echo $test;
?>
 
@rootssw:

Ich würde mich jetzt auch nicht als PHP Freak bezeichnen daher meine Frage, warum funktioniert mein Konstrukt auch? Zufall?
 
Nein, der Code funktioniert nicht. Warum er scheinbar funktioniert:
$test > '20' ist immer wahr, falls der String $test größer als der String '20' ist, und gibt dir somit meist 1 zurück. strlen(1) ist somit 1, und somit true. Also wird der Code im if-Zweig immer ausgeführt, falls der String $test größer als der String '20' ist. Falls er kleiner als '20' ist, wird der Code im else-Zweig ausgeführt.
 
Bsp:
Code:
$test="101 Dalmatiner ist ein mächtig doofer Film";
//Ausgabe:101 Dalmatiner ist ein mächtig doofer Film

$test="7 Jahre in Tibet find ich da schon besser";
//Ausgabe:7 Jahre in Tibet fin...
:-)
 
Danke Euch beiden für die Erklärung.
Schön, dass man hier nicht sofort angepflaumt wird, wenn man nachfragt um es zu verstehen und es nicht als gegeben hin nimmt.
 
Zurück