|
|
Чтобы раз и навсегда закончить разговоры про типографику...
Перед тем, как вывешивать новости на сайт, на локалхосте я пропускаю их через такое чудо (как же оно скрипит, когда текста больше 3 страниц... это я к тому, чтобы никто не додумался выкладывать такое на работающий сайт на каждый вызов страницы).
Я поначалу пытался соблюдать некую систему (сначала чистим спецсимволы, затем - пробелы, потом ещё что-то), но потом всё немного перемешалось - хотя на качество работы оно не влияет.
Не обрабатываются только очень редкие случай, которые я не успел поймать - но это меньше сотой доли процента случаев. Например, сегодня ухватил, что "23%"</td> преобразовываются в «23%"</td>> - то есть одна кавычка не обрабатывается. Возможно, есть и другие подобные случаи - но это редкость.
В форму надо постить текст, в котором одинарный перевод строки будет значить <br />, двойной - новый абзац <p>.^var[text;^form[text]]
#Какой тип кавычек используется ка сайте?
^var[laquo;«^;]
^var[raquo;»^;]
#
# Можно указать и другие открывающие и закрывающие кавычки.
# Любители почитать стандарт HTML 4.01 (вот идеалисты!)
# могут даже сделать так:
#
# ^var[laquo;<q>]
# ^var[raquo;</q>]
#
###########################################
^var[text;^match[the ;g;the ^;;^var[text]]]
^var[text;^match[The ;g;The ^;;^var[text]]]
# люди! Любите букву Ё - как много в этом звуке для
# сердца русского слилось, как много в нём отозвалось
# и т.д. и т.п., ну, в общем, вы понимаете...
^var[text;^match[еще;g;ещё;^var[text]]]
^var[text;^match[ ее ;g; её ;^var[text]]]
^var[text;^match[серьезн;g;серьёзн;^var[text]]]
###########################################
# надеюсь, вы смотрите это в кодировке win1251?
#Специальные символы...
#Троеточие...
^var[text;^match[\.\.\.;g;…^;;^var[text]]]
^var[text;^match[\. \. \.;g;…^;;^var[text]]]
^var[text;^match[┘;g;…^;;^var[text]]]
#Художественые кавычки
^var[text;^match[╚;g; <<;^var[text]]]
^var[text;^match[╩;g;>> ;^var[text]]]
^var[text;^match[└;g; <<;^var[text]]]
^var[text;^match[⌠;g; <<;^var[text]]]
^var[text;^match[⌠;g; <<;^var[text]]]
^var[text;^match[■;g;>> ;^var[text]]]
#Шарик
^var[text;^match[∙;g;•^;;^var[text]]]
#Знак номера
^var[text;^match[╧;g;№^;;^var[text]]]
#Знак "плюс-минус"
^var[text;^match[╠;g;±^;;^var[text]]]
#Знак амперсанда
^var[text;^match[&;g;&^;;^var[text]]]
#Копирайт
^var[text;^match[╘;g;©^;;^var[text]]]
#Зарег. торг. знак
^var[text;^match[╝;g;®^;;^var[text]]]
#Градус
^var[text;^match[╟;g;°^;;^var[text]]]
#Параграф
^var[^match[╖;ig;§^;;^var[text]]]
#Дефис в середине, начале и конце строки
#Предварительно исправляем дефисы, накопированнные из ворда..
^var[text;^match[√;ig;-;^var[text]]]
^var[text;^match[≈;ig;-;^var[text]]]
#Мы могли много где наставить два пробела вместо одного,
#поэтому исправляемся, заодно убираем пробелы из концов строк...
^var[text;^match[ \s;ig; ;^var[text]]]
^var[text;^match[ $$;ig;;^var[text]]]
^var[text;^match[ \s;ig; ;^var[text]]]
^var[text;^match[ $$;ig;;^var[text]]]
^var[text;^match[ \s;ig; ;^var[text]]]
^var[text;^match[ $$;ig;;^var[text]]]
^var[text;^match[ \s;ig; ;^var[text]]]
^var[text;^match[ $$;ig;;^var[text]]]
^var[text;^match[ \s;ig; ;^var[text]]]
^var[text;^match[ $$;ig;;^var[text]]]
^var[text;^match[ %;g;%;^var[text]]]
^var[text;^match[ ,;g;,;^var[text]]]
^var[text;^match[ \.;g;.;^var[text]]]
^var[text;^match[ \?;g;?;^var[text]]]
^var[text;^match[ !;g;!;^var[text]]]
^var[text;^match[\( ;g;(;^var[text]]]
^var[text;^match[ \);g;);^var[text]]]
#Теперь, когда все художества удалены..
# Не дадим в обиду емейл и, прошу прощения, ебизнес..
^var[text;^match[ e-([А-Яа-я]{1,18});ig; <nobr>e-^item[\1]</nobr> ^;;^var[text]]]
^var[text;^match[ e-([A-Za-z]{1,18});ig; <nobr>e-^item[\1]</nobr> ^;;^var[text]]]
^var[text;^match[\s-\s;ig; ^;—^; ;^var[text]]]
^var[text;^match[^^-\s;nig;—^; ^;;^var[text]]]
^var[text;^match[\s-$$;ig; ^;—^;;^var[text]]]
^var[text;^match[^^ ^;;nig;;^var[text]]]
^var[text;^match[^^ ^;;nig;;^var[text]]]
^var[text;^match[^^ ^;;nig;;^var[text]]]
^var[text;^match[^^ ^;;nig;;^var[text]]]
#Убираем табуляторы, всё равно их браузер как пробелы показывает...
^var[text;^match[\t;ig; ;^var[text]]]
#Мы могли много где наставить два пробела вместо одного,
#поэтому исправляемся, заодно убираем пробелы из концов строк...
^var[text;^match[ \s;ig; ;^var[text]]]
^var[text;^match[ $$;ig;;^var[text]]]
###########################################
^var[text;^match[ ([0-9]{1,3}), ([0-9]{1,3}) ;ig; ^item[\1],^item[\2] ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,3})\. ([0-9]{1,3}) ;ig; ^item[\1],^item[\2] ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,3}), ([0-9]{1,3})%;ig; ^item[\1],^item[\2]%;^var[text]]]
^var[text;^match[ ([0-9]{1,3})\. ([0-9]{1,3})%;ig; ^item[\1],^item[\2]%;^var[text]]]
^var[text;^match[ ([0-9]{1,5}) г\. ;ig; ^item[\1] ^;г. ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,5}) г\., ;ig; ^item[\1] ^;г., ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,25})% ;ig; ^item[\1]% ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,25})%\. ;ig; ^;^item[\1]%. ;^var[text]]]
^var[text;^match[ ([0-9]{1,25})%, ;ig; ^item[\1]%, ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,4}) ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,2})\. ;ig; ^item[\1]. ^;;^var[text]]]
^var[text;^match[ ([0-9]{1,2}), ;ig; ^item[\1], ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2}) ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}), ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})\. ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})? ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})! ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})" ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})"\. ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})", ;ig; ^item[\1] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1] ^;^item[\2] ^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2}) ^;([A-Za-z]{1,2}) ;ig; ^item[\1] ^;^item[\2] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1] ^;^item[\2] ^;^item[\3] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1] ^;^item[\2] ^;^item[\3] ^;^item[\4] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}), ^;([А-Яа-я]{1,2}) ;ig; ^item[\1], ^;^item[\2] ^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2}), ^;([A-Za-z]{1,2}) ;ig; ^item[\1], ^;^item[\2] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}), ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1], ^;^item[\2] ^;^item[\3] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}), ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1], ^;^item[\2] ^;^item[\3] ^;^item[\4] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})\. ^;([А-Яа-я]{1,2}) ;ig; ^item[\1]\. ^;^item[\2] ^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2})\. ^;([A-Za-z]{1,2}) ;ig; ^item[\1]\. ^;^item[\2] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})\. ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1]\. ^;^item[\2] ^;^item[\3] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})\. ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1]\. ^;^item[\2] ^;^item[\3] ^;^item[\4] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}), ;ig; ^item[\1] ^;^item[\2], ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}), ^;([А-Яа-я]{1,2}) ;ig; ^item[\1] ^;^item[\2], ^;^item[\3] ^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}), ^;([А-Яа-я]{1,2}) ^;([А-Яа-я]{1,2}) ;ig; ^item[\1] ^;^item[\2], ^;^item[\3] ^;^item[\4] ^;;^var[text]]]
###########################################
# преобразуем спецсимволы старого имприматура в кавычки..
^var[text;^match[>>;g;^var[raquo];^var[text]]]
^var[text;^match[<<;g;^var[laquo];^var[text]]]
# остальные кавычки..
^var[text;^match[" ;ig;^var[raquo] ;^var[text]]]
^var[text;^match[ ";ig; ^var[laquo];^var[text]]]
^var[text;^match[" ^;;ig;^var[raquo] ^;;^var[text]]]
^var[text;^match[ ^;";ig; ^;^var[laquo];^var[text]]]
^var[text;^match[ ,;ig;,;^var[text]]]
^var[text;^match[ \.;ig;.;^var[text]]]
^var[text;^match[,";ig;^var[raquo],;^var[text]]]
^var[text;^match[",;ig;^var[raquo],;^var[text]]]
^var[text;^match["^;;ig;^var[raquo]^;;^var[text]]]
^var[text;^match[":;ig;^var[raquo]:;^var[text]]]
^var[text;^match["\?;ig;^var[raquo]?;^var[text]]]
^var[text;^match["\!;ig;^var[raquo]!;^var[text]]]
^var[text;^match[\.";ig;^var[raquo].;^var[text]]]
^var[text;^match["\.;ig;^var[raquo].;^var[text]]]
^var[text;^match["\);ig;^var[raquo]);^var[text]]]
^var[text;^match[\(";ig;(^var[laquo];^var[text]]]
^var[text;^match["…^;;ig;^var[raquo]…^;;^var[text]]]
^var[text;^match["&^;#133^;;ig;^var[raquo]&^;#133^;;^var[text]]]
###########################################
^var[text;^unescape_br[^var[text]]]
^var[text;^match[\n;g; ;^var[text]]]
^var[text;^match[p> ;g;p>;^var[text]]]
^var[text;^match[ <p;g;<p;^var[text]]]
^var[text;^match[p> ;g;p>;^var[text]]]
^var[text;^match[ <p;g;<p;^var[text]]]
^var[text;^match[p> ;g;p>;^var[text]]]
^var[text;^match[ <p;g;<p;^var[text]]]
# у меня стиль параграфа - <p class=first>some text</p>
# если у вас по-другому, переделайте.
^var[text;^match[<p>;g;</p><p class=first>;^var[text]]]
^var[text;^match[br> ;g;br>;^var[text]]]
^var[text;^match[ <br;g;<br;^var[text]]]
^var[text;^match[br> ;g;br>;^var[text]]]
^var[text;^match[ <br;g;<br;^var[text]]]
^var[text;^match[br> ;g;br>;^var[text]]]
^var[text;^match[ <br;g;<br;^var[text]]]
^var[text;^match[br> ;g;br>;^var[text]]]
^var[text;^match[ <br;g;<br;^var[text]]]
^var[text;^match[table></p>;g;table>;^var[text]]]
^var[text;^match[table><br>;g;table>;^var[text]]]
^var[text;^match[<p class=first><table;g;<table;^var[text]]]
^var[text;^match[<br><table;g;<table;^var[text]]]
^var[text;^match[ class=first>";ig; class=first>^var[laquo];^var[text]]]
^var[text;^match["</p>;ig;^var[raquo]</p>;^var[text]]]
^var[text;^match[br>";ig;br>^var[laquo];^var[text]]]
^var[text;^match["<br>;ig;^var[raquo]<br>;^var[text]]]
#############################
#интернет пишется с маленькой буквы,
#как завещал нам великий Лебедев...
^var[text;^match[Интерн;g;интерн;^var[text]]]
^var[text;^match[^^интерн;g;Интерн;^var[text]]]
^var[text;^match[br>^;интерн;g;br>^;Интерн;^var[text]]]
#разве что в начале предложения..
^var[text;^match[\. интерн;g;. Интерн;^var[text]]]
^var[text;^match[\? интерн;g;? Интерн;^var[text]]]
^var[text;^match[\! интерн;g;! Интерн;^var[text]]]
###########################################
# не отрываем от цифры килограммы и доллары..
^var[text;^match[ млн;g; ^;млн;^var[text]]]
^var[text;^match[ тыс;g; ^;тыс;^var[text]]]
^var[text;^match[ млрд;g; ^;млрд;^var[text]]]
^var[text;^match[ шт;g; ^;шт;^var[text]]]
^var[text;^match[ кг;g; ^;кг;^var[text]]]
^var[text;^match[ долл;g; ^;долл;^var[text]]]
###########################################
# а это мы делаем, чтобы отформатированный текст
# выводился на экран браузера, и не приходилось бы
# лезть в сырец страницы.
^var[text;^match[&;g;&^;;^var[text]]]
^var[text;^match[&^;amp^;;g;&^;;^var[text]]]
^var[text;^match[<;g;<^;;^var[text]]]
^var[text;^match[>;g;>^;;^var[text]]]
^var[text;^match[";g;"^;;^var[text]]]
#^var[text;^match[;g;;^var[text]]]
#^var[text;^match[;g;;^var[text]]]
###########################################
<p><b>Ctrl+C всё, что ниже и Ctrl+V в
текст вашей страницы:</b></p>
<hr>
^var[text]
<hr>
Misha, где тут флажок "some cool code is here" ставить, как Гиви предлагал? Я не Лужниковский, но тоже иногда нетленку творить могу :-)
|