Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Хитрая регулярка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как?
V2oD2o
Отправлено: 14 Июня, 2013 - 12:20:09
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




есть текст:
--------------------
фисташки "Джаз"*0.5кг;40.12;шт.

фисташки "Джаз"*40г;37.83;шт.

цукаты;137.54;кг.

цукаты 1.0 Хор;245.99;шт.

чернослив б/к;160.47;кг.

чернослив б/к 0.5;228.32;шт.
--------------------

надо получить:
--------------------
;фисташки "Джаз"*0.5кг;40.12;шт.
;фисташки "Джаз"*40г;37.83;шт.
;цукаты;137.54;кг.
;цукаты 1.0 Хор;245.99;шт.
;чернослив б/к;160.47;кг.
;чернослив б/к 0.5;228.32;шт.
--------------------

т.е. надо убрать лишние переводы строк и в начало каждой строки воткнуть ";"
все это содержится в textarea..
 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2013 - 12:30:28
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Принципиально в элементе формы? Вероятно, сразу отображать с заменой:
PHP:
скопировать код в буфер обмена
  1. $sText='фисташки "Джаз"*0.5кг;40.12;шт.
  2.  
  3. фисташки "Джаз"*40г;37.83;шт.
  4.  
  5. цукаты;137.54;кг.
  6.  
  7. цукаты 1.0 Хор;245.99;шт.
  8.  
  9. чернослив б/к;160.47;кг.
  10.  
  11. чернослив б/к 0.5;228.32;шт.';
  12.  
  13. $sText = preg_replace(array('/[\r\n]+/m', '/^/m'), array(PHP_EOL, ';'), $sText);
  14. //var_dump($sText);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
AlexAnder
Отправлено: 14 Июня, 2013 - 13:17:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




JavaScript пишет:
Спойлер (Отобразить)



Спойлер (Отобразить)

(Отредактировано автором: 14 Июня, 2013 - 14:17:13)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2013 - 13:33:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Потому что в примере выше строка-терминатор не пуста (содержит пробелы), о чём в изначальной задаче не было упомянуто. (вместо двойного терминатора идёт терминатор+пробельные символы+терминатор) - и неизвестно, следует ли заменять в таком случае. Если да, то
PHP:
скопировать код в буфер обмена
  1. $sText = preg_replace(array('/[\r\n]\s*[\r\n]/sm', '/^/m'), array(PHP_EOL ,';'), $sText);

Пример с str_replace некорректен (у меня не заменил ничего, и я знаю почему, предлагаю подумать).

Ну и, всё же, если нужен js:
CODE (javascript):
скопировать код в буфер обмена
  1. function clearSpaces(id)
  2. {
  3.    var rElem   = document.getElementById(id);
  4.    //could use concat with ';' & single replace, but ..
  5.    rElem.value = rElem.value.replace(/[\r\n]\s*[\r\n]/g, "\n").replace(/^/mg, ";");
  6. }
  7.  

CODE (html):
скопировать код в буфер обмена
  1. <textarea id="text" rows="10" cols="60"></textarea>
  2. <input type="button" onClick="clearSpaces('text'); return true;" value="clear">


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
AlexAnder
Отправлено: 14 Июня, 2013 - 13:36:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)





попробуйте в переменную $text поместить текст из 1-ого поста

(Добавление)
Цитата:
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript

php -> js (fix) Подмигивание
CODE (html):
скопировать код в буфер обмена
  1. <textarea id="test" style="width:300px;height:200px"></textarea>
  2. <br>
  3. <input type="button" onclick="go()" value="Replace it!">
  4. <script>
  5. var test = document.getElementById('test');
  6. function go() {
  7.         test.value = ';' + test.value.replace(/\n\n/g, '\n;');
  8. }
  9. </script>

(Отредактировано автором: 14 Июня, 2013 - 13:51:24)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
V2oD2o
Отправлено: 14 Июня, 2013 - 15:08:18
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Огромное спасибо!

сам бы точно не додумался до - '\n\n' заменить на '\n;' Радость

СПАСИБО! всем! Улыбка
 
 Top
esterio
Отправлено: 14 Июня, 2013 - 15:45:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




сверните внимание на то что вразных системах разные переносы
\n в *nix-ах
\r\n в windows
\r в маках
 
 Top
AlexAnder
Отправлено: 14 Июня, 2013 - 16:03:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




esterio пишет:
сверните внимание на то что вразных системах разные переносы
\n в *nix-ах
\r\n в windows
\r в маках

а в textarea вроде всегда \n?


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
IllusionMH
Отправлено: 14 Июня, 2013 - 16:05:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




V2oD2o, можно попробовать использовать эту регулярку (по логике должна ловить от одного и больше переносов подряд)

взято отсюда
(Добавление)
AlexAnder, в Opera 12 или 11.5 кажется изменили на \n, до этого было 2 символа.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB