Разбить текст и превью. Делаем своё more.

19 Май 2013

Метки: 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<число), но мне опять лень, так-то работает).

Вот такой вот скрипт без “вопросов” и полностью рабочий.


 

Похожие записи


© 2006 - 2024, Александр Сергеев