Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 31. 1. 2009, 18:38:39
ZDravím, mám script na zkrácení stringu
function sub_string($arg, $brg) { $crg = strlen($arg); if ($crg > $brg) { $arg = mb_substr($arg, 0, $brg, "utf-8"); $arg = $arg." ..."; } return $arg; } ale potřeboval bych do něj dodělat to, aby nechával dokončit slovo, když už překročí limit NEBO pokud by to bylo možné, aby skončil o slovo dříve pokud by už následujícím slovem limit překročil (chápete? :-)) nechci hotové řešení, jen popostrčit k výsledku / nějakou ideu mi hodně prosím :-) Všem díky |
||
Alphard Profil |
#2 · Zasláno: 31. 1. 2009, 18:57:11
„nechci hotové řešení, jen popostrčit k výsledku“
udělejte to tak, jak to děláte teď, ale v oseknutém řetězci hledejte poslední mezeru (podíval bych se na funci strrpos()) a pak ještě jednou substr() |
||
Majkl578 Profil |
#3 · Zasláno: 31. 1. 2009, 19:08:35 · Upravil/a: Majkl578
function sub_string($arg, $brg) { $crg = mb_strlen($arg); if ($crg > $brg) { $x = strrchr(mb_substr($arg, 0, $brg, 'utf-8'), ' '); $arg = mb_substr($arg, 0, $brg - mb_strlen($x, 'utf-8'), "utf-8"); $arg .= " ..."; } return $arg; } |
||
Sylar Profil |
#4 · Zasláno: 31. 1. 2009, 19:32:52
Alphard
Majkl578 Děkuji moc oboum ... jen ještě fce strrchr() mi tedy vrátí počet znaků od toho posledního nalezeného (co jsem zadal) do konce stringu, ano? Ostatní je mi jasné :-) |
||
Majkl578 Profil |
#5 · Zasláno: 31. 1. 2009, 19:50:57
strrchr vrati znaky ZA poslednim vyskytem daneho znaku
viz: http://cz.php.net/function.strrchr |
||
Alphard Profil |
#6 · Zasláno: 31. 1. 2009, 19:53:30 · Upravil/a: Alphard
„jen ještě fce strrchr() mi tedy vrátí počet znaků od toho posledního nalezeného (co jsem zadal) do konce stringu, ano?“
ne ne, vrátí část řetězce, od posledního nalezeného znaku do konce, proto je tam ještě jednou mb_strlen Majkl578 to udělal trochu jinak, než jsem navrhoval // tak jsem to nestihl, možná kdybych hned odkázal manuál :-) |
||
Majkl578 Profil |
#7 · Zasláno: 31. 1. 2009, 20:06:49 · Upravil/a: Majkl578
ted me napada, asi by tam melo byt jeste -1, aby se odstranila i ta mezera, takze takto:
function sub_string($arg, $brg) { $crg = mb_strlen($arg); if ($crg > $brg) { $x = strrchr(mb_substr($arg, 0, $brg, 'utf-8'), ' '); $arg = mb_substr($arg, 0, $brg - mb_strlen($x, 'utf-8') - 1, "utf-8"); $arg .= " ..."; } return $arg; } :) Alphard: uz jsem mel pocit, ze prepisujes me odpovedi jinymi slovy :D |
||
Darkweaver Profil |
#8 · Zasláno: 31. 1. 2009, 20:16:34
<?php
$limit = 100; $summary =<<<summary Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis lobortis cursus sem. Mauris nec sapien non nibh semper convallis. Sed at erat in orci imperdiet vehicula. Fusce id massa sit amet nisi congue pharetra. summary; if ( strlen($summary) > $limit ){ $summary = substr($summary, 0, strrpos(substr($summary, 0, $limit), ' ')) . '...'; echo $summary; } ?> |
||
Časová prodleva: 15 let
|
0