Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.09.2003, 21:51
PaWell вне форума Посмотреть профиль Отправить личное сообщение для PaWell Найти все сообщения от PaWell
  № 1  
PaWell

Регистрация: Jun 2003
Сообщений: 31
Attention ereg-обрезание :)

Помогите, пожалуйста написать такое регулярное выражение, которое находит в строке длинные слова, больше 20 знаков, и разбивает их пробелами.

Заранее благодарен за помощь!!!

Старый 25.09.2003, 22:23
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 2  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Хм ... А зачем тебе ерег сдался ? Он же ресурсов до хвига и больше жрет!

Если школьное задание, то пожалуйста -

/([\w]{10})([\w]10,})/

заменяем на

/$1 $2/

лучше для этого дела использовать preg_replace

если не для школы ... то тогда напиши хвункцию сам. Без регов

Старый 25.09.2003, 23:05
PaWell вне форума Посмотреть профиль Отправить личное сообщение для PaWell Найти все сообщения от PaWell
  № 3  
PaWell

Регистрация: Jun 2003
Сообщений: 31
2 kompadre:
А как твой совет до кучи собрать???
Чот я с "/$1 $2/" не очень понял...
Напиши мне, пожалуйста, полностью preg_replace, который разбивает строку.

Старый 26.09.2003, 02:07
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 4  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Я сам не очень-то в моих советах разбираюсь ... Но смотри, берем :

- первая часть регулярного выражения (одна штука). В простонародие это называется pattern (игла, то что мы исчем)
- вторая часть регулярного выражения (или replacement, то на что бум менять)
- string (стог, строка из которой бум менять)

так ...

в другую руку берем функцию
PHP код:
preg_replace($pattern, $replacement, $string); 
и подстовляем

должно получится что-то вроде

$replaced = preg_replace ("/([\w]{10})([\w]{10,})/", "$1 $2", $string);

По идеи это должно в слове (в котором 20 или больше букв) вставить пробел на 10-й букве. Хотя коряво это блин

* Прошу прощения, оказывается replacement-у не нужны косые!


Последний раз редактировалось kompadre; 26.09.2003 в 02:17.
Старый 26.09.2003, 10:36
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 5  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
$str = "строка товя оргромная с мегачем-то там таким, кстати, самое длинное. известное мне и частоупотребляемое слово - достопримечтальность";
$ar = explode($str," ");
foreach($ar as $curr)
{
$res .= wordwrap($curr,10," ",1)
}
__________________
а мы летим орбитами путями не избитыми...

Старый 26.09.2003, 16:41
PaWell вне форума Посмотреть профиль Отправить личное сообщение для PaWell Найти все сообщения от PaWell
  № 6  
PaWell

Регистрация: Jun 2003
Сообщений: 31
2 kompadre:
Почти всё работает!!!
Если слово из 20 букв, то всё ок (скрипт его разбивает на два по 10 букв), а вот если слово из 40 букв, то выводит первое слово из 10 букв, а второе - из 30
Тоесть после первого разбиения строки скрипт её дальше не смотрит Как это исправить???

2 Nirva:
$res возвращает пустое значение
Почему???

Старый 26.09.2003, 17:09
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 7  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Это ни как не исправиш, говорю тебе никакних регов. Ворд врап, только нирва все нимного попутал

$res = wordwrap($str,10," ",1)

и все

Старый 26.09.2003, 18:29
nagash вне форума Посмотреть профиль Отправить личное сообщение для nagash Посетить домашнюю страницу nagash Найти все сообщения от nagash
  № 8  
nagash
Ветеран форума
 
Аватар для nagash

Регистрация: Jul 2001
Адрес: Москва
Сообщений: 3,088
Отправить сообщение для nagash с помощью ICQ
если так принципиально это сделать регом тогда вот так

PHP код:
$a = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccccccccc";
$a = preg_replace("/(\w{10})/", "$1 ", $a);
echo 
$a; 
только тут надо отметить один момент... прег реплейс надо самому себе приравнивать...
если написать
$b = preg_replace("/(\w{10})/", "$1 ", $a);
тогда $b не изменится...
надо именно
$a = preg_replace("/(\w{10})/", "$1 ", $a);

удачи...

Старый 26.09.2003, 19:19
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 9  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Здесь вынужден согласиться

Старый 26.09.2003, 20:14
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 10  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
Цитата:
Оригинал написал(а) kompadre
Это ни как не исправиш, говорю тебе никакних регов. Ворд врап, только нирва все нимного попутал

$res = wordwrap($str,10," ",1)

и все
тогда просто расфигачишь всю строку по 10 символов на пробелы. щас....

PHP код:
<?
$str 
= "строка товя оргромная с мегачем-то там таким, кстати, самое длинное. известное мне и частоупотребляемое слово - достопримечтальность";
$ar = explode(" ",$str);
foreach(
$ar as $curr)
{
$res .= wordwrap($curr,10," ",1) ." ";
}
echo 
$res;
?>
работает. в прошлом ступил, конечно.
__________________
а мы летим орбитами путями не избитыми...

Создать новую тему   Часовой пояс GMT +4, время: 18:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.