| Author |
Message |
Navigator
Участник форума
Joined: 27 Nov 2004
Posts: 223
Карма: -13 поощрить/наказать
Location: Павловский Посад
|
Posted: Sun Mar 20, 2005 8:45 pm (написано за 1 минуту 55 секунд)
Post subject: Улучшаем удобочитаемость текста
|
|
// Если не так назвал тему, не пинайте
Эта функция заменяет:- Простые кавычки на «ёлочки»
- «Минус» между словами на тире (—)
- Также заменяет два или три минуса между словами на тире
- Убирает пробелы между скобками и словами («( слово )« становится в »(слово)»)
- То же самое, но для кавычек
например,
| Quote: |
|
Я ""кажется" "что-то"" -- ( забыл ) |
становится в
| Quote: |
|
Я ««кажется» «что-то»» — (забыл) |
К сожалению, в регулярных выражениях я не очень сйлён, поэтому могут быть глюки... подскажите, если что. Код функции:
| Code (php): |
скопировать код в буфер обмена |
function tipografika ($str) { $str = preg_replace("/\"(|(.+?))\"/", "«\\2»", $str); // Делаем «правильные» кавычки $str = preg_replace("/»(|(.+?))«/", "«\\2»", $str); // Устраняем косяки, которые могут возникнуть благодаря предыдущему выражению $str = preg_replace("/«(.+?)«(.+?)»(.+?)»/", "«\\1»\\2«\\3»", $str); // Опять устраняем косяки =) $str = preg_replace("/(.+?)\s-\s(.+?)/", "\\1 — \2", $str); // Заменяем «минус» между словами на тире $str = preg_replace("/(.+?)\s--\s(.+?)/", "\\1 — \\2", $str); // Заменяем два минуса между словами на тире $str = preg_replace("/(.+?)\s---\s(.+?)/", "\\1 — \\2", $str); // Заменяем три минуса между словами на тире $str = preg_replace("/\(\s(.+?)(|\s)\)/", "(\\1)", $str); // Убираем пробелы между словами и скобками $str = preg_replace("/«\s(.+?)(|\s)»/", "«\\1»", $str); // Убираем пробелы между словами и кавычками return $str; } |
Last edited by Navigator on Mon Mar 21, 2005 8:31 am; edited 1 time in total
|
|
| Back to top |
|
 |
Юрий Насретдинов
Модератор

Joined: 13 Mar 2003
Posts: 8636
Карма: 223 поощрить/наказать
Location: 007 495
|
Posted: Sun Mar 20, 2005 9:36 pm (спустя 51 минуту; написано за 37 секунд)
Post subject:
|
|
Navigator
http://www.artlebedev.ru/tools/typograf/
Лучше бы сделали, чтобы Ваш скрипт отправлял текст туда и выдирал соответствующий результат - пользы было бы намного больше
|
|
| Back to top |
|
 |
striimii
Участник форума

Joined: 14 Mar 2005
Posts: 50
Карма: 11 поощрить/наказать
Location: Москва, Россия
|
Posted: Sun Mar 20, 2005 10:31 pm (спустя 54 минуты; написано за 1 минуту 45 секунд)
Post subject:
|
|
Ходить куда-то из скрипта не есть лучшее решение. Времени это займет в разы дольше самой кривонаписанной процедуры. Да и надежность соединения еще сыграет немаловажную роль. Лучше экспериментально пробить несколько текстовиков у лебедева, и посмотреть что он выправляет. Тоже и также сделать потом у себя.
|
|
| Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 7920
Карма: 261 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Sun Mar 20, 2005 11:12 pm (спустя 40 минут; написано за 46 секунд)
Post subject:
|
|
yUAC
Я, конечно, извиняюсь, но почему эта тема до сих пор в "Готовых решениях"? Раз обсуждение приняло такой оборот?
|
|
| Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2265
Карма: 108 поощрить/наказать
Location: Москва
|
Posted: Mon Mar 21, 2005 12:22 am (спустя 1 час 9 минут; написано за 2 минуты 6 секунд)
Post subject:
|
|
yUAC
Кстати этот тупограф заменяет минус на знак #151;, на что ругается валидатор XHTML с w3c.org. А вот на mdash; он не ругается, поэтому я предпочитаю именно его. Maus
Да уж сабж сыроват -- но направление верное! =)
|
|
| Back to top |
|
 |
Navigator
Участник форума
Joined: 27 Nov 2004
Posts: 223
Карма: -13 поощрить/наказать
Location: Павловский Посад
|
Posted: Mon Mar 21, 2005 8:33 am (спустя 8 часов 11 минут; написано за 1 минуту 5 секунд)
Post subject:
|
|
Немного исправил функцию -- были небольше косяки, вроде этого:
| Navigator wrote: |
|
(«( слово )« становится в »(слово)») |
Я в функции, правда, заменяю на сами символы, а не на их эквиваленты... но впрочем и так сойдёт =)
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13556
Карма: 403 поощрить/наказать
|
Posted: Mon Mar 21, 2005 12:12 pm (спустя 3 часа 39 минут)
Post subject:
|
|
 М |
|
| Navigator wrote: |
|
в регулярных выражениях я не очень сйлён, поэтому могут быть глюки... |
Вообще говоря, с такой постановкой вопроса - в Готовых решениях этому топику не место. Так что извините... Давайте так сделаем. Вы эту функцию поиспользуете некоторое время (скажем, пару месяцев). За это время наверняка найдутся баги, Вы их исправите в своих проектах. А уж затем - в Готовые решения положим. Перенесено из форума: Склад готовых решений :: PHP. Перенесено в форум: Разное :: PHP. |
|
|
| Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 7920
Карма: 261 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Mon Mar 21, 2005 1:35 pm (спустя 1 час 22 минуты; написано за 2 минуты 20 секунд)
Post subject:
|
|
|
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4060
Карма: 260 поощрить/наказать
Location: Питер
|
Posted: Mon Mar 21, 2005 2:01 pm (спустя 25 минут; написано за 3 минуты 35 секунд)
Post subject:
|
|
| Есть замечательная штука в регах "Граница слова" называется.
И ещё
А удалять пробелы между кавычками и словами - плохая практика.
|
|
| Back to top |
|
 |
Navigator
Участник форума
Joined: 27 Nov 2004
Posts: 223
Карма: -13 поощрить/наказать
Location: Павловский Посад
|
Posted: Mon Mar 21, 2005 3:20 pm (спустя 1 час 19 минут; написано за 1 минуту 12 секунд)
Post subject:
|
|
WingedFox, спасибо.
| WingedFox wrote: |
|
А удалять пробелы между кавычками и словами - плохая практика. |
Вот, например, « слово ». А вот другое «слово». Что приятнее читается?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4060
Карма: 260 поощрить/наказать
Location: Питер
|
Posted: Mon Mar 21, 2005 3:48 pm (спустя 27 минут; написано за 2 минуты 47 секунд)
Post subject:
|
|
Navigator
Пожалуйста. Правильнее читать так, как решил автор. А учитывая что в качестве кавычек используется знак дюйма, определить автоматически направление "ёлочек" и "лапок" - нетривиальная задача. Решать её регулярными выражениями - совсем плохая идея.
|
|
| Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 7920
Карма: 261 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Mon Mar 21, 2005 4:16 pm (спустя 27 минут; написано за 14 секунд)
Post subject:
|
|
| WingedFox wrote: |
|
Решать её регулярными выражениями - совсем плохая идея. |
А как же иначе её решать?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4060
Карма: 260 поощрить/наказать
Location: Питер
|
Posted: Mon Mar 21, 2005 4:20 pm (спустя 4 минуты; написано за 59 секунд)
Post subject:
|
|
Maus
Либо руками, либо посимвольным анализом текста, допуская что первая кавычка является открывающей.
|
|
| Back to top |
|
 |
Navigator
Участник форума
Joined: 27 Nov 2004
Posts: 223
Карма: -13 поощрить/наказать
Location: Павловский Посад
|
Posted: Mon Mar 21, 2005 5:23 pm (спустя 1 час 2 минуты; написано за 41 секунду)
Post subject:
|
|
функция и есть для того, чтобы ничего не делать «руками» =)
| WingedFox wrote: |
|
либо посимвольным анализом текста |
эээ... это как?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4060
Карма: 260 поощрить/наказать
Location: Питер
|
Posted: Mon Mar 21, 2005 5:30 pm (спустя 7 минут; написано за 4 минуты 9 секунд)
Post subject:
|
|
| Navigator wrote: |
|
функция и есть для того, чтобы ничего не делать «руками» =) |
Если функция не умеет давать полностью адекватный результат, то лучше её не применять. Иначе будут появляться комментарии типа:
| Navigator wrote: |
// Устраняем косяки, которые могут возникнуть благодаря предыдущему выражению // Опять устраняем косяки =) |
И всё равно адекватный результат будет получаться далеко не всегда. А правила оформления текста внедрить в производственный процесс совсем не трудно.
| Navigator wrote: |
|
эээ... это как? |
Посимвольное чтение файла, анализ появляющихся кавычек, определение направленя кавычки в зависимости от контекста... =)
|
|
| Back to top |
|
 |
Navigator
Участник форума
Joined: 27 Nov 2004
Posts: 223
Карма: -13 поощрить/наказать
Location: Павловский Посад
|
Posted: Mon Mar 21, 2005 9:43 pm (спустя 4 часа 12 минут; написано за 48 секунд)
Post subject:
|
|
| WingedFox wrote: |
|
А правила оформления текста внедрить в производственный процесс совсем не трудно. |
я вообще-то эту ф-ю для форума планировал...
| WingedFox wrote: |
|
Посимвольное чтение файла, анализ появляющихся кавычек, определение направленя кавычки в зависимости от контекста... =) |
давайте, напишите, выложите, а потом вместе замерим Script execution time =)
|
|
| Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 7920
Карма: 261 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Mon Mar 21, 2005 10:02 pm (спустя 19 минут; написано за 42 секунды)
Post subject:
|
|
Navigator
А время тут уже роли играть не будет: если одна функция работает неверно - она автоматически аутсайдер.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4060
Карма: 260 поощрить/наказать
Location: Питер
|
Posted: Tue Mar 22, 2005 10:17 am (спустя 12 часов 15 минут; написано за 5 минут 26 секунд)
Post subject:
|
|
| Navigator wrote: |
|
я вообще-то эту ф-ю для форума планировал... |
Так никто и не мешает написать «правила оформления сообщений». Заодно и предупредить, что включена функция для обработки текста. Вообще, на мой взгляд, автоматически (без спроса) менять что-либо из вводимого мной - очень плохая идея. Вот например, я выкладываю текст, в котором используется знак дюйма для обозначения размеров, а в результате получаю какие-либо кавычки. Несколько неприятная ситуация, не находите?
| Navigator wrote: |
|
давайте, напишите, выложите, а потом вместе замерим Script execution time =) |
А оно надо? Maus
Это Вы правильно заметили =)
|
|
| Back to top |
|
 |
Navigator
Участник форума
Joined: 27 Nov 2004
Posts: 223
Карма: -13 поощрить/наказать
Location: Павловский Посад
|
Posted: Tue Mar 22, 2005 6:23 pm (спустя 8 часов 6 минут; написано за 1 минуту 47 секунд)
Post subject:
|
|
| WingedFox wrote: |
|
Так никто и не мешает написать «правила оформления сообщений». |
«такие» кавычки (а конкретнее клавиши Alt+0) в Internet Explorer'е+Windows XP вызывают такой же эффект, что и кнопка «Назад» =)
|
|
| Back to top |
|
 |
|