| Autor | Zpráva | ||
|---|---|---|---|
| Mufna Profil |
#1 · Zasláno: 8. 12. 2010, 15:11:02
Zdravím Vás. Řeším problém, že chci udělat funkci pro zkrácení textového řetězce a zároveň chci, aby se nezkrátilo poslední slovo (čili aby poslední slovo zůstalo celé). Jak byste to řešili ? Zatím mám zkracování textových řetězců udělané takto:
$zkraceny_text = mb_substr($str,'0','130','UTF-8'); $zkraceny_text.= '...'; |
||
| Keeehi Profil |
#2 · Zasláno: 8. 12. 2010, 15:15:50
Pomocí mb-strrpos si vyhledej poslední mezeru.
|
||
| Kalby Profil |
#3 · Zasláno: 8. 12. 2010, 15:17:48 · Upravil/a: Kalby
podle me bys mel najit posledni mezeru pomoci strpos a za ni to useknout
EDIT: tak pozde |
||
| __construct Profil |
#4 · Zasláno: 8. 12. 2010, 15:19:25
V miestnom PHP FAQ je odkaz na článok od Jakub Vrány - pozri si ho…
|
||
| Mufna Profil |
#5 · Zasláno: 8. 12. 2010, 16:01:43 · Upravil/a: Mufna
Díky všem. Vyřešil jsem to takto (jen nevím, jestli to není moc krkolomný a zbytečně dlouhý, no jinak mě to nenapadlo).
$zkraceny_text = mb_substr($puvodni_text,'0','130','UTF-8'); $str_end = mb_strrpos($zkraceny_text," ",'100','UTF-8'); $zkraceny_text = mb_substr($zkraceny_text,'0',$str_end,'UTF-8'); $zkraceny_text.= '...'; Funguje to bezvadně. Ten OFFSET s hodnotou 100 u druhého řádku a funkce mb_strrpos() jsem dal od oka ... slovo delší než 30 znaků se mi snad nikde vyskytovat nebude, takže to můžu začít klidně zkoumat až od 100. znaku. |
||
| tatyalien Profil |
#6 · Zasláno: 10. 12. 2010, 10:11:30 · Upravil/a: tatyalien
Trochu opravené z vlákna: Odkaz
function perex($text, $length = 5, $ending = "...") {
// ořízne řetězec na zadaný počet znaků
$text = mb_substr($text, 0, $length);
// poslední výskyt mezery
$pos = mb_strrpos($text, " ");
// oříznutí řetězce
$text = mb_substr($text, 0, $pos);
// dodání koncovky
$text .= $ending;
return $text;
}
$vstup = "1 3 5 7 9 1 3 5 7 9 1 3";
echo "Vstup: $vstup<br>";
echo perex($vstup, 20);
/*
Výsledek:
Vstup: 1 3 5 7 9 1 3 5 7 9 1 3
1 3 5 7 9 1 3 5 7 9...
*/ |
||
|
Časová prodleva: 16 let
|
|||
0