Разбить текст и превью. Делаем своё 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<число), но мне опять лень, так-то работает).
Вот такой вот скрипт без “вопросов” и полностью рабочий.