Здравствуйте, помогите правильно составить регулярку, что бы если строка более 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 |
|