![]() |
ereg-обрезание :)
Помогите, пожалуйста написать такое регулярное выражение, которое находит в строке длинные слова, больше 20 знаков, и разбивает их пробелами.
Заранее благодарен за помощь!!! |
Хм ... А зачем тебе ерег сдался ? Он же ресурсов до хвига и больше жрет!
Если школьное задание, то пожалуйста - /([\w]{10})([\w]10,})/ заменяем на /$1 $2/ лучше для этого дела использовать preg_replace если не для школы ... то тогда напиши хвункцию сам. Без регов |
2 kompadre:
А как твой совет до кучи собрать??? :) Чот я с "/$1 $2/" не очень понял... Напиши мне, пожалуйста, полностью preg_replace, который разбивает строку. |
Я сам не очень-то в моих советах разбираюсь ... Но смотри, берем :
- первая часть регулярного выражения (одна штука). В простонародие это называется pattern (игла, то что мы исчем) - вторая часть регулярного выражения (или replacement, то на что бум менять) - string (стог, строка из которой бум менять) так ... в другую руку берем функцию PHP код:
должно получится что-то вроде $replaced = preg_replace ("/([\w]{10})([\w]{10,})/", "$1 $2", $string); По идеи это должно в слове (в котором 20 или больше букв) вставить пробел на 10-й букве. Хотя коряво это блин * Прошу прощения, оказывается replacement-у не нужны косые! |
$str = "строка товя оргромная с мегачем-то там таким, кстати, самое длинное. известное мне и частоупотребляемое слово - достопримечтальность";
$ar = explode($str," "); foreach($ar as $curr) { $res .= wordwrap($curr,10," ",1) } |
2 kompadre:
Почти всё работает!!! :) Если слово из 20 букв, то всё ок (скрипт его разбивает на два по 10 букв), а вот если слово из 40 букв, то выводит первое слово из 10 букв, а второе - из 30 :( Тоесть после первого разбиения строки скрипт её дальше не смотрит :( Как это исправить??? 2 Nirva: $res возвращает пустое значение :( Почему??? |
Это ни как не исправиш, говорю тебе никакних регов. Ворд врап, только нирва все нимного попутал
$res = wordwrap($str,10," ",1) и все |
если так принципиально это сделать регом тогда вот так
PHP код:
если написать $b = preg_replace("/(\w{10})/", "$1 ", $a); тогда $b не изменится... надо именно $a = preg_replace("/(\w{10})/", "$1 ", $a); удачи... |
Здесь вынужден согласиться
|
Цитата:
PHP код:
|
| Часовой пояс GMT +4, время: 18:07. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.