У меня есть это текстовое описание, которое я использовал подстроку, чтобы ограничить до 400 символов. Я хотел бы добавить несколько точек в конце, чтобы указать, что в предложении есть что-то еще. Есть ли способ добавить указанные точки в одно и то же эхо?
echo substr('<br><p class = "color-lighter-grey">'.$rowBlog['blog_description'].'</p>', 0, 400);
Если я просто добавлю точки в конце </p>, он не будет отображаться, потому что я предполагаю, что он отсчитывается от подстроки.
Если я сделаю echo '<p>.....</p>' под кодом, точки просто перейдут на другую строку.
Как сделать так, чтобы они оставались в конце подстроки?
Что произойдет, если ваша строка больше 400? То, как вы это сделали сейчас, включает разметку html, а не только заключенный текст. Не отрубится ли ваш тэг trainling p? Вам было бы лучше взять подстроку $rowBlog, а затем заключить ее в теги HTML. Если бы вы сделали это, вы могли бы даже тогда просто взять подстроку 390 или что-то еще и добавить к этой подстроке некоторую конечную точку, хотя в некоторых случаях они могут быть перенесены на новую строку. Возможно, вы захотите взглянуть на CSS также с многоточием, если это как-то применимо здесь.






Вам нужно удалить html из содержимого базы данных и включить .... перед конечным </p>
echo "<br><p class = "color-lighter-grey">";
echo substr($rowBlog['blog_description'], 0, 400);
echo strlen($rowBlog['blog_description']) > 400 ? "....</p>" : "</p>";
И, если содержимое меньше 400 символов, точки не отображаются.
Во-первых, использование HTML-кода внутри функции substr может закончиться уничтожением вашего кода.
Я предлагаю вам удалить все теги HTML из строки с помощью функции strip_tags, а затем использовать функцию substr.
Я использую эту функцию в своем собственном проекте, надеюсь, это поможет
/**
* @param string $str
* @param int $allow_carc
* @param string $placeholder
*/
function substr_str($str,$allow_carc,$placeholder = '...') {
$str = strip_tags($str);
if (mb_strlen($str) > $allow_carc) {
$substr = mb_substr($str,0,$allow_carc,"utf-8");
return $substr.$placeholder;
}else{
return preg_replace('/\s+/', ' ', $str);
}
}
Разве удаление всех тегов не сломает html в случае с OP?
@John.M Да, я знал это, но использование substr с неизвестной длиной строки, содержащей HTML-код, совсем нехорошо. это всегда мы будем бросать некоторые ошибки синтаксического анализа. Поэтому я предложил изменить способы, которые он использует для хранения данных.
Да, сначала ему нужно удалить html из содержимого substr.
Не знаю, сработало ли это, но попробуйте
echo substr("<br><p class='color-lighter-grey'> $rowBlog['blog_description']'...'</p>", 0, 400);
Если вы поместите тег html внутри substr() , функция может вырезать часть
</p>, поместить ее за пределы функции и использовать конкатенацию:echo "<br><p class='color-lighter-grey'>" . subsrt($rowBlog['blog_description'], 0, 400) . "....</p>";