
08.03.2009, 14:40
|
|
Участник форума
Регистрация: 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
|
|
|