Поскольку заголовок говорит, что я хочу вырезать строку, не разбивая ни слова, ни теги HTML, теперь я нашел эту функцию, которая решает проблему с тегами html (слегка измененная мной)
function substrhtml($str,$start,$len){
$str_clean = substr(strip_tags($str),$start,$len);
if(preg_match_all('/\<[^>]+>/is',$str,$matches,PREG_OFFSET_CAPTURE)){
for($i=0;$i<count($matches[0]);$i++){
if($matches[0][$i][1] < $len){
$str_clean = substr($str_clean,0,$matches[0][$i][1]) . $matches[0][$i][0] . substr($str_clean,$matches[0][$i][1]);
}else if(preg_match('/\<[^>]+>$/is',$matches[0][$i][0])){
$str_clean = substr($str_clean,0,$matches[0][$i][1]) . $matches[0][$i][0] . substr($str_clean,$matches[0][$i][1]);
break;
}
}
return $str_clean;
}else{
return substr($str,$start,$len);
}
}
Источник
но он все еще разрезает слова пополам в середине предложения, чего я не хочу, какие-либо идеи о том, как это отсортировать?
Как всегда, любая помощь приветствуется и спасибо заранее.