Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przycinanie przydlugiego tekstu
Forum PHP.pl > Forum > PHP
vegeir
Witam,

Napisalem sobie funkcje do przycinania tekstu, chodzilo mi o to, ze chce miec tekst dlugosci 50 znakow, ale jesli 50 znak to nie spacja, to zeby wyraz zostal dokonczony i dopiero po wyrazie ucieta reszta tekstu. Funkcja dziala dobrze, tyle tylko ze jesli puszcze ja w petli, np. 30 powtorzen roznej dlugosci tekstow, to czasem strasznie zwalnia. Mozecie rzucic na nia okiem?

[php:1:1ea3ca8f9d]<?php
function strpad($string, $length, $end = '...') {
$padded_string = '';
if( strlen($string) < $length ) {
$padded_string = $string;
} else {
if( $string[$length] == chr(32) ) {
$padded_string = str_pad($string, $length+1);
} else {
for( $i=0; $i<($length); $i++ ) {
$padded_string .= $string[$i];
}
while( strpos( $string[$length], " ")===false ) {
$padded_string .= $string[$length];
$length++;
}
$padded_string .= $end;
}
}
return $padded_string;
}

?>[/php:1:1ea3ca8f9d]
wassago
nie lepiej uzyc tego

[php:1:97d6af7d84]<?php

$string = "Winamp is now freeware! Thanks to all who have previously registered, your support is really appreciated!";

function string_cut( $string, $cut_size )
{
$StringArray = explode( " ", $string );
for( $i = 0; $i < $cut_size; $i++ ) {
$string_cut .= " "." $StringArray[$i]";
}
return "$string_cut"."...";
}
$string = "";

echo string_cut( $string, 8 );
?>[/php:1:97d6af7d84]
przyklad z zend.com
vegeir
Rzeczywiscie, lepsze rozwiazanie smile.gif Dzieki za pomoc
matid
Jeszcze krótsze:
[php:1:e4eef99681]
<?
function skr_dane($tekst, $il_znakow)
{
if (strlen($tekst) > $il_znakow)
return substr($tekst, 0, strrpos(substr($tekst, 0, $il_znakow), " ")).' ...';
else return $tekst;
}
echo skr_dane($tekst,50);
?>
[/php:1:e4eef99681]
kwiateek
[manual:27523dca2e]Wordwrap[/manual:27523dca2e] nie wystarcza?

Pozdrawiam.
Cross
nie ponieważ wordwrap rozdzieli wyraz np. w połowie a tu chodzi o całe wyrazy , więc jeśli zdanie ma ileś tam znaków , a maksymalna ilośc znaków jaka może być kończy się w podanym wyrazie to zostawia go całego a ucina wszystko zaraz po nim. wordwrap przydaje się przy bezsensownych wpisach jak np. "hudshudshdsds" coś takiego bo wtedy rozdzieli to nie psując tabelki itp smile.gif
rzseattle
Hmm

wordwrap ( string str [, int width [, string break [, boolean cut])

cos mi sie wydaje ze ktos lepiej powinien czytac manuala smile.gif
Cross
aaa faktycznie smile.gif dawno nie czytałem manuala smile.gif , przepraszam za to iż odrobinke wprowadziłem w błąd smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.