nick4
Guest
Как бы сделали вы: обрезание строки не ломая слова и исключая знаки препинания
я сделал вот так, и хочу услышать критику, в случае если можно сделать более оптимальнее или "идеальнее по функциональности":
я сделал вот так, и хочу услышать критику, в случае если можно сделать более оптимальнее или "идеальнее по функциональности":
PHP:
$end = exploder("", "&*^[{(:;/,@#");
function is_simb($simb) {
global $end;
foreach ($end as $sb) {
if ($simb==$sb) return false;
}
return true;
}
function exploder($explode, $string) {
if (empty($explode)) {
for ($i=0;$i<strlen($string);$i++) {
$return[] = $string[$i];
}
return $return;
}
return explode($explode, $string);
}
function substr_words($string, $end=250) {
# Укорачиваем на определенное кол-во символов
$string = substr($string, 0, $end);
$string = explode(" ", $string);
# Удаляем последнее слово в 90% случае обрезанное
unset($string[count($string)-1]);
# Соединяем массив пробелом и делаем реверс строки,
# для того чтобы пройтись по конечным символам в поисках
# элемента из переменной $end
$string = strrev(implode(" ", $string));
# Делим строку по-символьно в массив
$string = exploder("", $string);
$i=0;
foreach ($string as $str) {
if (is_simb($str)) break;
unset($string[$i]);
$i++;
}
return strrev(implode("", $return));
}
echo substr_words("Обрезать строку до определенного количества символов:, тест", 56);

)))))))))))))))))))))))))