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]   

> Без описания
Саныч
Отправлено: 23 Августа, 2010 - 16:34:56
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Есть такой js код
CODE (javascript):
скопировать код в буфер обмена
  1. value = value.replace(/\s*([\.\!]){3,}\s*/g,"$1$1$1 ");
  2. value = value.replace(/\s*([\.\!]){2}\s*/g,"$1$1 ");

если в строке введено "слово1 ....... слово2", делаем так "слово1... слово2", если же "слово1..слово2", то "слово1. слово2"
Короче говоря, если введено более 3 символов, то режем до трех, если 2, то оставляем только один. С тремя и более все нормально, а вот когда добавляю проверку на 2 символа получаю что-то типа этого: "слово!! ! слово"
Как правильно составить регулярку для моей цели?

Да и еще, возможно ли с помощью регулярок менять регистр букв? Пример, есть строка "слово раз. слово два", нужно заменить на "слово раз. Слово два"

(Отредактировано автором: 23 Августа, 2010 - 16:37:44)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Uchkuma
Отправлено: 23 Августа, 2010 - 18:05:19
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Саныч пишет:
Как правильно составить регулярку для моей цели?
Вот так, я думаю, будет правильно:
Цитата:
(?<![.!])([.!]){2}(?![.!])
и в качестве замены выставить ссылку $1 и все!
(Добавление)
Саныч пишет:
Да и еще, возможно ли с помощью регулярок менять регистр букв?
На javascript не знаю, а на php разве что preg_replace_callback().
 
 Top
Саныч
Отправлено: 23 Августа, 2010 - 18:22:42
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Uchkuma пишет:
Вот так, я думаю, будет правильно

Все таки неправильно. Вот этот кусок "(?<![.!])" вызывает ошибку, я так понимаю из-за символа "<". Вот эта часть "(?![.!])" тоже не помогает, я пробовал так прописывать еще до того, как задал вопрос...

(Отредактировано автором: 23 Августа, 2010 - 18:23:39)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Uchkuma
Отправлено: 23 Августа, 2010 - 19:35:35
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Саныч пишет:
Вот этот кусок "(?<![.!])" вызывает ошибку, я так понимаю из-за символа "<".
Хм... Видимо, в javascript нету просмотра назад?
Саныч пишет:
Вот эта часть "(?![.!])" тоже не помогает
Эта часть должна работать. Смотреть тут.
 
 Top
Саныч
Отправлено: 23 Августа, 2010 - 19:47:53
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Uchkuma пишет:
Эта часть должна работать. Смотреть тут.

Ну эта ссылка для меня не нова Улыбка
То что часть должна работать это я понимаю, поэтому и пробовал ее раньше подставлять. Ведь по логике все правильно, если после двух точек нет еще одной, то заменяем... Вроде бы все правильно, но... не работает Хм

(Отредактировано автором: 23 Августа, 2010 - 19:48:16)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Uchkuma
Отправлено: 23 Августа, 2010 - 19:52:51
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Ну раз нету просмотра назад, можно так попробовать:
Цитата:
([^.!])([.!]){2}(?![.!])
Тогда замена должна быть на $1$2.
 
 Top
Саныч
Отправлено: 23 Августа, 2010 - 20:00:49
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Нет этот тоже не то. При такой регулярке строку "слово!!!" режет до "слово!!"...
Ну я впринципе придумал как это можно реализовать, завтра на свежую голову попробую...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Uchkuma
Отправлено: 23 Августа, 2010 - 20:14:15
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Саныч пишет:
При такой регулярке строку "слово!!!" режет до "слово!!"
Да быть такого не может. Или я ничего не понимаю в регулярках.

Может точки экранировать? Хотя внутри символьного класса этого делать не обязательно. Хотя это же javascript, может еще какие заморочки есть в отличие от php.
 
 Top
Саныч
Отправлено: 23 Августа, 2010 - 20:19:23
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Uchkuma пишет:
Может точки экранировать?

когда проверял у себя, заекранировал, результат описал выше...
я вобще символы всегда экранирую, чтобы наверняка, привык так уже...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
JustUserR
Отправлено: 24 Августа, 2010 - 14:48:37
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Саныч пишет:
Да и еще, возможно ли с помощью регулярок менять регистр букв?
В JS-скриптах все строковые объекты имеются значительное число методов для реализации различной функциональности - в частности для изменения регистра можно использовать toLowerCase и toUpperCase
Uchkuma пишет:
Это же javascript, может еще какие заморочки есть в отличие от php.
В JS-скрипах работа с регулярными выражениями PCRE является наиболее удобной поскольку максимально приближена к синтаксису из языка Perl который по сути является автором этого стандарта - преимущество заключается в том что регулярнгые выражения образуют не только отдельный базовый класс и но представляют собой спецальный тип константыных выражений - соответственно дополнительный уровень связанный со строковым экранированием в нем не требуеся Кроме того поиск и замена всех шаблонов определяется аналогичной функией - но с использованием исходного модификатора /g


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB