| Автор |
Сообщение |
Navigator
Участник форума
Зарегистрирован: 27.11.2004
Сообщ.: 223
Карма: -13 поощрить/наказать
Откуда: Павловский Посад
|
Добавлено: Вс Мар 20, 2005 8:45 pm (написано за 1 минуту 55 секунд)
Заголовок сообщения: Улучшаем удобочитаемость текста
|
|
// Если не так назвал тему, не пинайте
Эта функция заменяет:- Простые кавычки на «ёлочки»
- «Минус» между словами на тире (—)
- Также заменяет два или три минуса между словами на тире
- Убирает пробелы между скобками и словами («( слово )« становится в »(слово)»)
- То же самое, но для кавычек
например,
| Цитата: |
|
Я ""кажется" "что-то"" -- ( забыл ) |
становится в
| Цитата: |
|
Я ««кажется» «что-то»» — (забыл) |
К сожалению, в регулярных выражениях я не очень сйлён, поэтому могут быть глюки... подскажите, если что. Код функции:
| Код (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; } |
Последний раз редактировалось: Navigator (Пн Мар 21, 2005 8:31 am), всего редактировалось 1 раз
|
|
| Вернуться к началу |
|
 |
Юрий Насретдинов
Модератор

Зарегистрирован: 13.03.2003
Сообщ.: 8537
Карма: 232 поощрить/наказать
Откуда: 007 495
|
Добавлено: Вс Мар 20, 2005 9:36 pm (спустя 51 минуту; написано за 37 секунд)
Заголовок сообщения:
|
|
Navigator
http://www.artlebedev.ru/tools/typograf/
Лучше бы сделали, чтобы Ваш скрипт отправлял текст туда и выдирал соответствующий результат - пользы было бы намного больше
|
|
| Вернуться к началу |
|
 |
striimii
Участник форума

Зарегистрирован: 14.03.2005
Сообщ.: 50
Карма: 11 поощрить/наказать
Откуда: Москва, Россия
|
Добавлено: Вс Мар 20, 2005 10:31 pm (спустя 54 минуты; написано за 1 минуту 45 секунд)
Заголовок сообщения:
|
|
Ходить куда-то из скрипта не есть лучшее решение. Времени это займет в разы дольше самой кривонаписанной процедуры. Да и надежность соединения еще сыграет немаловажную роль. Лучше экспериментально пробить несколько текстовиков у лебедева, и посмотреть что он выправляет. Тоже и также сделать потом у себя.
|
|
| Вернуться к началу |
|
 |
Maus
Модератор

Зарегистрирован: 29.06.2003
Сообщ.: 7221
Карма: 219 поощрить/наказать
Откуда: пос. Омсукчан Магаданской области
|
Добавлено: Вс Мар 20, 2005 11:12 pm (спустя 40 минут; написано за 46 секунд)
Заголовок сообщения:
|
|
yUAC
Я, конечно, извиняюсь, но почему эта тема до сих пор в "Готовых решениях"? Раз обсуждение приняло такой оборот?
|
|
| Вернуться к началу |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Зарегистрирован: 12.06.2004
Сообщ.: 2267
Карма: 109 поощрить/наказать
Откуда: Москва
|
Добавлено: Пн Мар 21, 2005 12:22 am (спустя 1 час 9 минут; написано за 2 минуты 6 секунд)
Заголовок сообщения:
|
|
yUAC
Кстати этот тупограф заменяет минус на знак #151;, на что ругается валидатор XHTML с w3c.org. А вот на mdash; он не ругается, поэтому я предпочитаю именно его. Maus
Да уж сабж сыроват -- но направление верное! =)
|
|
| Вернуться к началу |
|
 |
Navigator
Участник форума
Зарегистрирован: 27.11.2004
Сообщ.: 223
Карма: -13 поощрить/наказать
Откуда: Павловский Посад
|
Добавлено: Пн Мар 21, 2005 8:33 am (спустя 8 часов 11 минут; написано за 1 минуту 5 секунд)
Заголовок сообщения:
|
|
Немного исправил функцию -- были небольше косяки, вроде этого:
| Navigator писал(а): |
|
(«( слово )« становится в »(слово)») |
Я в функции, правда, заменяю на сами символы, а не на их эквиваленты... но впрочем и так сойдёт =)
|
|
| Вернуться к началу |
|
 |
Дмитрий Кóтеров
Администратор

Зарегистрирован: 10.03.2003
Сообщ.: 13535
Карма: 399 поощрить/наказать
|
Добавлено: Пн Мар 21, 2005 12:12 pm (спустя 3 часа 39 минут)
Заголовок сообщения:
|
|
 М |
|
| Navigator писал(а): |
|
в регулярных выражениях я не очень сйлён, поэтому могут быть глюки... |
Вообще говоря, с такой постановкой вопроса - в Готовых решениях этому топику не место. Так что извините... Давайте так сделаем. Вы эту функцию поиспользуете некоторое время (скажем, пару месяцев). За это время наверняка найдутся баги, Вы их исправите в своих проектах. А уж затем - в Готовые решения положим. Перенесено из форума: Склад готовых решений :: PHP. Перенесено в форум: Разное :: PHP. |
|
|
| Вернуться к началу |
|
 |
Maus
Модератор

Зарегистрирован: 29.06.2003
Сообщ.: 7221
Карма: 219 поощрить/наказать
Откуда: пос. Омсукчан Магаданской области
|
Добавлено: Пн Мар 21, 2005 1:35 pm (спустя 1 час 22 минуты; написано за 2 минуты 20 секунд)
Заголовок сообщения:
|
|
|
|
|
| Вернуться к началу |
|
 |
WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4030
Карма: 248 поощрить/наказать
Откуда: Питер
|
Добавлено: Пн Мар 21, 2005 2:01 pm (спустя 25 минут; написано за 3 минуты 35 секунд)
Заголовок сообщения:
|
|
| Есть замечательная штука в регах "Граница слова" называется.
И ещё
А удалять пробелы между кавычками и словами - плохая практика.
|
|
| Вернуться к началу |
|
 |
Navigator
Участник форума
Зарегистрирован: 27.11.2004
Сообщ.: 223
Карма: -13 поощрить/наказать
Откуда: Павловский Посад
|
Добавлено: Пн Мар 21, 2005 3:20 pm (спустя 1 час 19 минут; написано за 1 минуту 12 секунд)
Заголовок сообщения:
|
|
WingedFox, спасибо.
| WingedFox писал(а): |
|
А удалять пробелы между кавычками и словами - плохая практика. |
Вот, например, « слово ». А вот другое «слово». Что приятнее читается?
|
|
| Вернуться к началу |
|
 |
WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4030
Карма: 248 поощрить/наказать
Откуда: Питер
|
Добавлено: Пн Мар 21, 2005 3:48 pm (спустя 27 минут; написано за 2 минуты 47 секунд)
Заголовок сообщения:
|
|
Navigator
Пожалуйста. Правильнее читать так, как решил автор. А учитывая что в качестве кавычек используется знак дюйма, определить автоматически направление "ёлочек" и "лапок" - нетривиальная задача. Решать её регулярными выражениями - совсем плохая идея.
|
|
| Вернуться к началу |
|
 |
Maus
Модератор

Зарегистрирован: 29.06.2003
Сообщ.: 7221
Карма: 219 поощрить/наказать
Откуда: пос. Омсукчан Магаданской области
|
Добавлено: Пн Мар 21, 2005 4:16 pm (спустя 27 минут; написано за 14 секунд)
Заголовок сообщения:
|
|
| WingedFox писал(а): |
|
Решать её регулярными выражениями - совсем плохая идея. |
А как же иначе её решать?
|
|
| Вернуться к началу |
|
 |
WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4030
Карма: 248 поощрить/наказать
Откуда: Питер
|
Добавлено: Пн Мар 21, 2005 4:20 pm (спустя 4 минуты; написано за 59 секунд)
Заголовок сообщения:
|
|
Maus
Либо руками, либо посимвольным анализом текста, допуская что первая кавычка является открывающей.
|
|
| Вернуться к началу |
|
 |
Navigator
Участник форума
Зарегистрирован: 27.11.2004
Сообщ.: 223
Карма: -13 поощрить/наказать
Откуда: Павловский Посад
|
Добавлено: Пн Мар 21, 2005 5:23 pm (спустя 1 час 2 минуты; написано за 41 секунду)
Заголовок сообщения:
|
|
| WingedFox писал(а): |
|
руками |
функция и есть для того, чтобы ничего не делать «руками» =)
| WingedFox писал(а): |
|
либо посимвольным анализом текста |
эээ... это как?
|
|
| Вернуться к началу |
|
 |
WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4030
Карма: 248 поощрить/наказать
Откуда: Питер
|
Добавлено: Пн Мар 21, 2005 5:30 pm (спустя 7 минут; написано за 4 минуты 9 секунд)
Заголовок сообщения:
|
|
| Navigator писал(а): |
|
функция и есть для того, чтобы ничего не делать «руками» =) |
Если функция не умеет давать полностью адекватный результат, то лучше её не применять. Иначе будут появляться комментарии типа:
| Navigator писал(а): |
// Устраняем косяки, которые могут возникнуть благодаря предыдущему выражению // Опять устраняем косяки =) |
И всё равно адекватный результат будет получаться далеко не всегда. А правила оформления текста внедрить в производственный процесс совсем не трудно.
| Navigator писал(а): |
|
эээ... это как? |
Посимвольное чтение файла, анализ появляющихся кавычек, определение направленя кавычки в зависимости от контекста... =)
|
|
| Вернуться к началу |
|
 |
Navigator
Участник форума
Зарегистрирован: 27.11.2004
Сообщ.: 223
Карма: -13 поощрить/наказать
Откуда: Павловский Посад
|
Добавлено: Пн Мар 21, 2005 9:43 pm (спустя 4 часа 12 минут; написано за 48 секунд)
Заголовок сообщения:
|
|
| WingedFox писал(а): |
|
А правила оформления текста внедрить в производственный процесс совсем не трудно. |
я вообще-то эту ф-ю для форума планировал...
| WingedFox писал(а): |
|
Посимвольное чтение файла, анализ появляющихся кавычек, определение направленя кавычки в зависимости от контекста... =) |
давайте, напишите, выложите, а потом вместе замерим Script execution time =)
|
|
| Вернуться к началу |
|
 |
Maus
Модератор

Зарегистрирован: 29.06.2003
Сообщ.: 7221
Карма: 219 поощрить/наказать
Откуда: пос. Омсукчан Магаданской области
|
Добавлено: Пн Мар 21, 2005 10:02 pm (спустя 19 минут; написано за 42 секунды)
Заголовок сообщения:
|
|
Navigator
А время тут уже роли играть не будет: если одна функция работает неверно - она автоматически аутсайдер.
|
|
| Вернуться к началу |
|
 |
WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4030
Карма: 248 поощрить/наказать
Откуда: Питер
|
Добавлено: Вт Мар 22, 2005 10:17 am (спустя 12 часов 15 минут; написано за 5 минут 26 секунд)
Заголовок сообщения:
|
|
| Navigator писал(а): |
|
я вообще-то эту ф-ю для форума планировал... |
Так никто и не мешает написать «правила оформления сообщений». Заодно и предупредить, что включена функция для обработки текста. Вообще, на мой взгляд, автоматически (без спроса) менять что-либо из вводимого мной - очень плохая идея. Вот например, я выкладываю текст, в котором используется знак дюйма для обозначения размеров, а в результате получаю какие-либо кавычки. Несколько неприятная ситуация, не находите?
| Navigator писал(а): |
|
давайте, напишите, выложите, а потом вместе замерим Script execution time =) |
А оно надо? Maus
Это Вы правильно заметили =)
|
|
| Вернуться к началу |
|
 |
Navigator
Участник форума
Зарегистрирован: 27.11.2004
Сообщ.: 223
Карма: -13 поощрить/наказать
Откуда: Павловский Посад
|
Добавлено: Вт Мар 22, 2005 6:23 pm (спустя 8 часов 6 минут; написано за 1 минуту 47 секунд)
Заголовок сообщения:
|
|
| WingedFox писал(а): |
|
Так никто и не мешает написать «правила оформления сообщений». |
«такие» кавычки (а конкретнее клавиши Alt+0) в Internet Explorer'е+Windows XP вызывают такой же эффект, что и кнопка «Назад» =)
|
|
| Вернуться к началу |
|
 |
|