Показать сообщение отдельно

  #9  
Старый 08.03.2009, 14:40
spamoney
Участник форума
Регистрация: 26.12.2006
Сообщений: 107
С нами: 10196899

Репутация: 27
По умолчанию

Здравствуйте, помогите правильно составить регулярку, что бы если строка более N-го количества символов (допустим более 40), то эта строка обрезается по последний пробел, пробывал сам, вот что получилось:

Код:
function cut ($str, $dlina='40') {
if (preg_match('#^([\s\S]{'.$dlina.'}[^\!\.\?]*)[\.\!\?]#i',strip_tags($str),$match)) $code = $match[1];
else if (preg_match('#^([\s\S]{'.$dlina.'}[^\ \ ]*)[\ \ ]#i',strip_tags($str),$match)) $code = $match[1];

return $code; 
    }


$text='Исследование программных продуктов, защит программного обеспечения, низкоуровневое программирование';
echo "Символов до: ".strlen(strip_tags($text))."<br />";
$text=cut($text);
echo "$text<br />";
echo "Символов после: ".strlen(strip_tags($text))."<br /><br /><br />";


$text='Исследование программных продуктов, защитатников';
echo "Символов до: ".strlen(strip_tags($text))."<br />";
$text=cut($text);
echo "$text<br />";
echo "Символов после: ".strlen(strip_tags($text))."<br />";
но функция cut(); работает только если текст более 40 символов и после этих 40 символов есть пробел, вот код выполнения:

Код:
Символов до: 99
Исследование программных продуктов, защит
Символов после: 41


Символов до: 48

Notice: Undefined variable: code in script.php on line 8

Символов после: 0
А нужно что бы было так:
Код:
Символов до: 99
Исследование программных продуктов, защит
Символов после: 41


Символов до: 48
Исследование программных продуктов
Символов после: 34
 
Ответить с цитированием