Forum Webscript.Ru
Программирование => PHP => Тема начата: от 06 Ноября 2001, 11:40:09
-
Здраствуйте!
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Дизайн от такого расширяется, как с помощью регулярных выражений исправить это?
$text=ereg_replace("([^ \\t\\n\\t]{15})[^ \\t\\n\\t]*","\\\\1",$text);
вот так обрежется на 15 символе. А как сделать чтоб после 15 символа ставился тег
?
-
Недавно на fido7.ru.php такое решение вычитал:
function break_long_words($source_text,$lng)
{
$regExp=\'/(\\S{\'.$lng.\',})/ei\';
$res_text=preg_replace($regExp,"wordwrap(\'\\\\1\',$lng,\'\\n\',1)",$source_text);
return $res_text;
}
$lng - через сколько символов ставить \\n
$source - искомая строка
можешь \\n заменить на
, хотя с \\n тоже все нормально работает
-
Спасибо
-
А если нужно усложнить гдето вот так:
1.1 Если $regExp попадает в слово:
1.2 То нужно что бы была проверка сколько символов до конца слова, если больше 5, то ищем начало слова и если до начала слова больше 5 символов то режим там где есть?
О как надуманно :)
-
Этот regexp для разбиения монолитного текста - то есть текста без пробелов и символов перевода строки. На простой текст с пробелами и переводами строки он вообще не реагирует.
То есть если например есть текст :
$a="Мои познания PHP начались не более месяца тому назад"
echo break_long_words($a,20);
то текст не будет изменен, потому что в нем нет фрагмента строки более 20 символов без пробелов. А если бы написал так:
$a="Мои познания PHP начались не более месяца тому назад"
echo break_long_words($a,4);
то получил бы такой результат:
Мои позн
ания PHP нача
лись не боле
е меся
ца тому наза
д
Если ты не понял ничего из того что я тут написал - просто поюзай эту функцию, думаю разберешься.
-
сенькс...
пошел юзать....