Маюсь с функцией генерацией текста на лету. Пишу настраиваемую функцию выбора метаописания для статьи. Например, функция, которая будет брать 3-е и 5-е (в зависимости от настроек) предложение из текста, резать эти 2 предложения пополам, объединять их в одно, делая его длиной до 200 символов (настраиваемо), обрезая по словам. Получившееся предложение делать с заглавной буквы. PHP: /************************************************************************************************************************ Функция Gen_TXT формирует из текста метаописание $first - номер предложения из котьорого берётся первая половина $second - номер предложения из которого берётся вторая половина $max_len - максимальная длинна полученного метаописания. ************************************************************************************************************************/ $first=1; $second=3; $max_len =150; function Gen_TXT ($text,$first,$second,$max_len) { $first--; $second--; // убираем лишнее $text = strip_tags ($text); $text = html_entity_decode ($text); $text = str_replace(array(",",";",":","\\","/","\n","\r"), "", $text); // разбиваем текст на предложения $text = str_replace(array("!","?","..."), ".", $text); $text = explode(".",$text); //вырезаем половинку первого предложения $text1 = explode("!!!",wordwrap ($text[$first],strlen($text[$first])/2,"!!!")); $text1 = $text1 [0]; //вырезаем и пришиваем половинку второго предложения $text = explode("!!!",wordwrap ($text[$second],strlen($text[$second])/2,"!!!")); $text1 = $text1." ".$text[1]; // обрезаем под максимальную длинну $text1 = explode("!!!",wordwrap ($text1,$max_len,"!!!")); $text1 = trim(trim($text1 [0]),"\xA0")."."; //убираем возможную двойную точку вконце предложения $text1 = str_replace("..", ".", $text1); return $text1; } Функция работает с текстом, где 3-5 и более предложений, если в тексте одно предложение, то она работает некорректно! Просьба помочь с решением!
serg-php http://www.php.net/if http://www.php.net/count И проверяйте, чтобы количество предложений было не меньше чем max($first, $second)
Не стал я заморачиваться с єтим алгоритмом, а придумал новый! PHP: // Generating Methadescription $str = strip_tags($str); $str = str_replace(array(".",",",";",":","\\","/","(",")","&ndash","\"","\n","\r"), " ", $str); $result = strlen($str); if($result > 250) { $str = wordwrap($str,50, "|"); $str = explode("|", $str); $str= $str[0]." ".$str[4]." ".$str[7]."."; } else { $str = wordwrap($str,50, "|"); $str = explode("|", $str); $str = $str[0]." ".$city." ".$str[2]." ".$country."."; } Просто и со вкусом! Думаю, такое решение претендует на то, чтобы его добавить в копилку форума.