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: 13 let
|
0