Разбить текст и превью. Делаем своё more.
Метки: more, wordpress, обрезать текст, превью текста, разбить текст
Больше даже для себя запишу этот код, т.к. я не уверен, что он пригодится кому-нибудь,- все же через плагины всё реализуют, а не руками…
Тем не менее, пригодится в ситуации, когда вы берете из базы текст и хотите его обрезать или разбить, ну как текст перед “читать далее”.
Часто появляется знак вопроса, в скриптах, которые я пытался найти. Там везде используются ненужные substr и preg_match (или preg_replace).
Так вот, скрипт мой использует обычный explode поочередно, деля сначала предложения, а потом слова. Я опустил момент с запятыми, так как для меня +- одно слово – даже лучше.
$introtext='';
$_introtext=explode(".",strip_tags($text));
$_anou=16;$_anou_num=0;
foreach($_introtext as $_i1){
if($_i1!=='' & $_i1!==' '){
$_intro2=explode(" ",$_i1);
$_intro2_count=count($_intro2);
$_intro2_num=0;
foreach($_intro2 as $_i2){
if($_i2!=='' & $_i2!==' '){
$_i2=str_replace(".","",$_i2);
if($_anou_num<$_anou){
$introtext.=" ";
$introtext.=$_i2;
$_intro2_num++;
if($_intro2_count==$_intro2_num){
$introtext.=".";
}
$_anou_num++;
}else{}
}
}
}
}
$introtext.="... [ссылку читать далее можно сюда]";
Такой громоздкий и, я уверен, свободно оптимизирующийся (мне просто лень) скрипт, который сделает превью без косяков.
Кратко: $text – изначальная переменная с текстом целиком, $introtext – выходные данные (можно сделать функцию, тупо заменив echo на “.=” и return $introtext), плюс 4 (если не ошибаюсь) счетчика (тоже можно изменить с $1<$2 на $1<число), но мне опять лень, так-то работает).
Вот такой вот скрипт без “вопросов” и полностью рабочий.