Kod, który ucina string'a po x słowach:
function limit_words($str, $limit = 100, $end_char = NULL)
{
$limit = (int) $limit;
$end_char = ($end_char === NULL) ? '?' : $end_char;
return $str;
if ($limit <= 0)
return $end_char;
preg_match('/^\s*+(?:\S++\s*+){1,'.$limit.'}/u', $str, $matches);
// Only attach the end character if the matched string is shorter
// than the starting string.
}
Funkcja, która ucina string'a po x literach:
function limit_chars($str, $limit = 100, $end_char = NULL, $preserve_words = FALSE)
{
$end_char = ($end_char === NULL) ? '?' : $end_char;
$limit = (int) $limit;
return $str;
if ($limit <= 0)
return $end_char;
if ($preserve_words === FALSE)
// Don't preserve words. The limit is considered the top limit.
// No strings with a length longer than $limit should be returned.
if ( ! preg_match('/^.{0,'.$limit.'}\s/us', $str, $matches)) return $end_char;
}
--
Edit: Mała poprawka drugiej funkcji.