Типографика и кавычки

12 3
Segey
На сайте с 23.08.2005
Offline
404
2246

Почитал немного небезызвестных и неизвестных авторов, и решил себе поменять кавычки " на елочки. Написал регулярку.... В упор не понимаю, почему не работает?

$text = preg_replace('/\040"([^"]+)"\040/', "«$1»", $text);

:confused:

Думал еще попробовать (\040|$|<br />) вместо \040, что посоветуете?

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
Shema
На сайте с 01.12.2005
Offline
176
#1


$text = preg_replace('/"([^"]+)"/', "&laquo;$1&raquo;", $text);

Вот это вроде меняет. А "\040" это что такое??

Я бы только сначала проверял чётность кавычек в исходном тексте...

Потому что бывает, что 3 кавычки это нормально, например, в названиях типа

ООО "Рекламное Агентство "Бла-бла-бла"

Студия Design Coda (http://www.designcoda.ru/). Личные контакты: +7(903)1367564, skype:andrey.oshemkov, telegram:@oshemkov. WMID: 492025973671 (https://passport.webmoney.ru/asp/certview4.asp?wmid=492025973671), делаем и рекламируем сайты, мобильные приложения, ботов для Telegram.
Segey
На сайте с 23.08.2005
Offline
404
#2

Shema,

Shema:
Вот это вроде меняет. А "\040" это что такое??

Это пробел, я его использую т.к. запомнился сразу как учил

Shema:
ООО "Рекламное Агентство "Бла-бла-бла"

Как бы тут разобраться, что ставить. Текст-то некорректен совсем... Вы как поступаете?

Гм, я и как у вас пробовал. Менял в тексте "Компания"

Mmonger
На сайте с 01.12.2005
Offline
165
#3
Segey:
Как бы тут разобраться, что ставить. Текст-то некорректен совсем...

С точки зрения русского языка абсолютно корректен, хотя программисту режет глаз :)

ООО «Рекламное Агентство «Бла-бла-бла»

Всё будет хорошо, но мы приложим усилия!
Segey
На сайте с 23.08.2005
Offline
404
#4

Mmonger,

С точки зрения многих материалов в инете, внутри нужно ставить лапки, а тут однако нет их.... Но глаза режет сильно :( :( А какой правило так позволяет делать? Я нигде не нашел таких.

Mmonger
На сайте с 01.12.2005
Offline
165
#5
Segey:
Mmonger,
С точки зрения многих материалов в инете, внутри нужно ставить лапки, а тут однако нет их.... Но глаза режет сильно :( :( А какой правило так позволяет делать? Я нигде не нашел таких.

В русском варианте различают два вида кавычек: типографические и рукописные. Первые применяются при наборе и печати. Вторые — в рукописях. Исключение: при наборе, цитата внутри цитаты может выделяеться рукописными кавычками, но это всё же выглядит хуже. Использование рукописных кавычек вместо типографических ошибкой не является.

J
На сайте с 01.09.2006
Offline
17
#6
Я бы только сначала проверял чётность кавычек в исходном тексте...

Проверка четности не спасает, сами же показали пример.

Я бы тоже отталкивался от того, справа или слева от знака кавычек стоит пробел (у топикстартера, если не ошибаюсь, так и сделано). Если слева, то кавычка открывающая, если справа, то закрывающая. Особо тяжелые случаи — слева и справа пробел или отсутствие такового, неразрывный пробел (который nbsp с амперсандом) — прогонял бы поиском и правил вручную.

Возникает только одна сложность: если текст идет как на русском, так и на английском, простая замена не спасает: в английской типографике правильно “ ”, в русской „ “, и, самое главное, эти знаки при внешней схожести встречаются в разных местах: у буржуев это нулевой уровень вложенности, у нас первый. Напомню, что у них первым уровнем вложенности будут одинарные кавычки: “Joint Stock Company ’GlavHrenSnabSbitNamahon’” — тоже нюанс.

А какой правило так позволяет делать? Я нигде не нашел таких.

А. Э. Мильчин, Л. А. Чельцова, Справочник издателя и автора — настольная книга любого человека, имеющего отношение к тексту :) У меня электронный вариант издания Аст, 1999 года, скачанный отсюда: http://rudtp.ru/lib.php?book=97

п. 8.2.4. Рисунок кавычек:

«2. Если внутри цитаты есть слова (словосочетания и фразы), в свою очередь заключенные в кавычки, то последние должны быть другого рисунка, чем кавычки, закрывающие и открывающие цитату (внешние кавычки — обычно елочки « », внутренние — лапки „ “).

Если по техн. Причинам невозможен набор кавычек другого рисунка, кавычки одного рисунка рядом не повторяются {об этом уже говорилось в топике}.

3. Если в цитате встречаются кавычки «третьей ступени», т. е. внутри заключенных в кавычки словосочетаний цитаты есть, в свoю очередь, слова, взятые в кавычки, в качестве последних рекомендуются кавычки второго рисунка, т. е. лапки».

Думаю, и в Гиленсоне

http://rudtp.ru/lib.php?book=11

http://rudtp.ru/lib.php?book=172

что-нибудь, да найдется.

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

P.S. Кое-что об этом написано, например, у Лебедева: http://www.artlebedev.ru/kovodstvo/62/

P.P.S. Да, совсем забыл о <br> и прочих тегах. Тоже учитывать надо. Наверное, к поиску кавычек с пробелами стоит подключить еще поиск кавычек с угловыми скобками, а не только c <br>.

DENIEL
На сайте с 15.11.2005
Offline
73
#7

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


<?
$text = 'Издательство "Красный огонек"!';
$text = preg_replace("/\"([^\"]*)\"/","&laquo;$1&raquo;",$text);
print $text;
?>
Прежде чем что-то сказать думайте, если не хотите думать - лучше не говорите.
Segey
На сайте с 23.08.2005
Offline
404
#8
DENIEL:
P.P.S. Да, совсем забыл о <br> и прочих тегах. Тоже учитывать надо. Наверное, к поиску кавычек с пробелами стоит подключить еще поиск кавычек с угловыми скобками

Это имхо вообще непонятно как реализовать, т.е. в тексте может быть пример кода или html, еще знак "больше", "меньше" и т.п., примеров много.

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

[^"а-я]*

Завтра после пар попробую окончательную ф-ю написать ☝

Shema
На сайте с 01.12.2005
Offline
176
#9

Я бы не стал делать такую функцию вообще.

Это работа верстальшика, а не программиста.

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

[Удален]
#10
Segey:
Почитал немного небезызвестных

Поменьше Лебедева читайте. Когда переведете сайт хотя бы в юникод, тогда и будет ставить какие хотите ковычки, пока же используется 8-битная windows-1251 или 7-битная KOI8-R нечего выдумывать извращений и пользуйтесь только простыми символами, хоть это и противоречит типографике.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий