Строка сокращается, если диапазон больше {1,40}. Но если меньше, пропадает.
preg_match('/<title[^>]*?>(.{1,40})(.*?)<\/title>/uis', $card, $title);
echo $title[1];
$title = substr($card, 0, 40);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости