parser

/faq/faq
/authors/авторы
/docs/документация

/powered_by_parser/в действии
/feedback/куда говорить
/jargon/жаргон

/download/скачать

/examples/примеры
/forum/форум



Поиск по форуму

По умолчанию ключевое слово ищется только в заголовке сообщения.

Ключевое слово:

Фильтровать по автору:



Чтобы раз и навсегда закончить разговоры про типографику...

Sanja | bougakov@mailru.com 28.12.2001 14:41

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

Я поначалу пытался соблюдать некую систему (сначала чистим спецсимволы, затем - пробелы, потом ещё что-то), но потом всё немного перемешалось - хотя на качество работы оно не влияет.

Не обрабатываются только очень редкие случай, которые я не успел поймать - но это меньше сотой доли процента случаев. Например, сегодня ухватил, что "23%"</td> преобразовываются в &laquo;23%"&lt;/td>&gt; - то есть одна кавычка не обрабатывается. Возможно, есть и другие подобные случаи - но это редкость.

В форму надо постить текст, в котором одинарный перевод строки будет значить <br />, двойной - новый абзац <p>.

^var[text;^form[text]]

#Какой тип кавычек используется ка сайте?
^var[laquo;&laquo^;]
^var[raquo;&raquo^;]
#
# Можно указать и другие открывающие и закрывающие кавычки.
# Любители почитать стандарт HTML 4.01 (вот идеалисты!)
# могут даже сделать так:
#
# ^var[laquo;<q>]
# ^var[raquo;</q>]
#


###########################################

^var[text;^match[the ;g;the&nbsp^;;^var[text]]]
^var[text;^match[The ;g;The&nbsp^;;^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;&#133^;;^var[text]]]
^var[text;^match[\. \. \.;g;&#133^;;^var[text]]]
^var[text;^match[┘;g;&#133^;;^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;&#149^;;^var[text]]]
#Знак номера
^var[text;^match[╧;g;&#8470^;;^var[text]]]
#Знак "плюс-минус"
^var[text;^match[╠;g;&#177^;;^var[text]]]
#Знак амперсанда
^var[text;^match[&;g;&amp^;;^var[text]]]
#Копирайт
^var[text;^match[╘;g;&#169^;;^var[text]]]
#Зарег. торг. знак
^var[text;^match[╝;g;&#174^;;^var[text]]]
#Градус
^var[text;^match[╟;g;&#176^;;^var[text]]]
#Параграф
^var[^match[╖;ig;&#167^;;^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>&#32^;;^var[text]]]
^var[text;^match[ e-([A-Za-z]{1,18});ig; <nobr>e-^item[\1]</nobr>&#32^;;^var[text]]]

^var[text;^match[\s-\s;ig;&nbsp^;&#151^; ;^var[text]]]
^var[text;^match[^^-\s;nig;&#151^;&nbsp^;;^var[text]]]
^var[text;^match[\s-$$;ig;&nbsp^;&#151^;;^var[text]]]
^var[text;^match[^^&nbsp^;;nig;;^var[text]]]
^var[text;^match[^^&nbsp^;;nig;;^var[text]]]
^var[text;^match[^^&nbsp^;;nig;;^var[text]]]
^var[text;^match[^^&nbsp^;;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]&nbsp^;;^var[text]]]
^var[text;^match[ ([0-9]{1,3})\. ([0-9]{1,3}) ;ig; ^item[\1],^item[\2]&nbsp^;;^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]&nbsp^;г.&nbsp^;;^var[text]]]
^var[text;^match[ ([0-9]{1,5}) г\., ;ig; ^item[\1]&nbsp^;г.,&nbsp^;;^var[text]]]

^var[text;^match[ ([0-9]{1,25})% ;ig; ^item[\1]%&nbsp^;;^var[text]]]
^var[text;^match[ ([0-9]{1,25})%\. ;ig;&nbsp^;^item[\1]%. ;^var[text]]]
^var[text;^match[ ([0-9]{1,25})%, ;ig; ^item[\1]%,&nbsp^;;^var[text]]]

^var[text;^match[ ([0-9]{1,4}) ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([0-9]{1,2})\. ;ig; ^item[\1].&nbsp^;;^var[text]]]
^var[text;^match[ ([0-9]{1,2}), ;ig; ^item[\1],&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2}) ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2}) ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}), ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})\. ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})? ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})! ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})" ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})"\. ;ig; ^item[\1]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})", ;ig; ^item[\1]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]&nbsp^;^item[\2]&nbsp^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2})&nbsp^;([A-Za-z]{1,2}) ;ig; ^item[\1]&nbsp^;^item[\2]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]&nbsp^;^item[\2]&nbsp^;^item[\3]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]&nbsp^;^item[\2]&nbsp^;^item[\3]&nbsp^;^item[\4]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2}),&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1],&nbsp^;^item[\2]&nbsp^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2}),&nbsp^;([A-Za-z]{1,2}) ;ig; ^item[\1],&nbsp^;^item[\2]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2}),&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1],&nbsp^;^item[\2]&nbsp^;^item[\3]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2}),&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1],&nbsp^;^item[\2]&nbsp^;^item[\3]&nbsp^;^item[\4]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2})\.&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]\.&nbsp^;^item[\2]&nbsp^;;^var[text]]]
^var[text;^match[ ([A-Za-z]{1,2})\.&nbsp^;([A-Za-z]{1,2}) ;ig; ^item[\1]\.&nbsp^;^item[\2]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2})\.&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]\.&nbsp^;^item[\2]&nbsp^;^item[\3]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})\.&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]\.&nbsp^;^item[\2]&nbsp^;^item[\3]&nbsp^;^item[\4]&nbsp^;;^var[text]]]

^var[text;^match[ ([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}), ;ig; ^item[\1]&nbsp^;^item[\2],&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}),&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]&nbsp^;^item[\2],&nbsp^;^item[\3]&nbsp^;;^var[text]]]
^var[text;^match[ ([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}),&nbsp^;([А-Яа-я]{1,2})&nbsp^;([А-Яа-я]{1,2}) ;ig; ^item[\1]&nbsp^;^item[\2],&nbsp^;^item[\3]&nbsp^;^item[\4]&nbsp^;;^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["&nbsp^;;ig;^var[raquo]&nbsp^;;^var[text]]]
^var[text;^match[&nbsp^;";ig;&nbsp^;^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["&#133^;;ig;^var[raquo]&#133^;;^var[text]]]
^var[text;^match["&amp^;#133^;;ig;^var[raquo]&amp^;#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&gt^;интерн;g;br&gt^;Интерн;^var[text]]]

#разве что в начале предложения..

^var[text;^match[\. интерн;g;. Интерн;^var[text]]]
^var[text;^match[\? интерн;g;? Интерн;^var[text]]]
^var[text;^match[\! интерн;g;! Интерн;^var[text]]]

###########################################

# не отрываем от цифры килограммы и доллары..

^var[text;^match[ млн;g;&nbsp^;млн;^var[text]]]
^var[text;^match[ тыс;g;&nbsp^;тыс;^var[text]]]
^var[text;^match[ млрд;g;&nbsp^;млрд;^var[text]]]
^var[text;^match[ шт;g;&nbsp^;шт;^var[text]]]
^var[text;^match[ кг;g;&nbsp^;кг;^var[text]]]
^var[text;^match[ долл;g;&nbsp^;долл;^var[text]]]

###########################################

# а это мы делаем, чтобы отформатированный текст
# выводился на экран браузера, и не приходилось бы
# лезть в сырец страницы.

^var[text;^match[&;g;&amp^;;^var[text]]]
^var[text;^match[&amp^;amp^;;g;&amp^;;^var[text]]]
^var[text;^match[<;g;&lt^;;^var[text]]]
^var[text;^match[>;g;&gt^;;^var[text]]]
^var[text;^match[";g;&quot^;;^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" ставить, как Гиви предлагал? Я не Лужниковский, но тоже иногда нетленку творить могу :-)

<<  Вернуться к списку сообщений


E-mail: mailbox@parser.ruCopyright © 1997-2001 Студия Артемия Лебедева