Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Функция "Русские кавычки" (Rumata)
Author Message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Wed Apr 14, 2004 4:59 pm ()
   Post subject: Функция "Русские кавычки"
Reply with quote

Code (php): скопировать код в буфер обмена
//**
// функция замены обычных кавычек " на русские елочки
function rus_quote($s) {
  $s = preg_replace (www.php.net/preg_replace)(
    array (www.php.net/array)(
      "/(^|\s+|\(|\<|\{\[\|)\"/ms",
      "/\"(\s+|\.|\,|\!|\?|\)|\>|\}|\]|\||$)/ms",
    ),
    array (www.php.net/array)(
      "\\1&laquo;",
      "&raquo;\\1",
    ),
    $s
  );
  return $s;
}
на сколько я знаю, русские кавычки должны быть левая и правая елочка. предлагаю одно из решений вставки оных.

предупреждение: возможно регулярные выражения не оптимизированы, готов приняь любую конструктивную критику

Last edited by Rumata on Wed Apr 14, 2004 7:10 pm; edited 1 time in total
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Apr 14, 2004 6:39 pm (спустя 1 час 39 минут)
   Post subject:
Reply with quote

Можно ^ и $ включить прямо в скобки альтернатив как отдельные элементы. Я только не могу понять, ну зачем было использовать апострофы в качестве символов-ограничителей в регулярном выражении: чтобы код запутать, что ли?
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Wed Apr 14, 2004 7:05 pm (спустя 25 минут)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
ну зачем было использовать апострофы
странно, но почему-то код "барахлил" без них.

сейчас проверю, если пройдет без ошибок, то первый постинг поправлю
Back to top
View user's profile Send private message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Wed Apr 14, 2004 7:11 pm (спустя 6 минут)
   Post subject:
Reply with quote

поправил
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Thu Apr 15, 2004 8:50 pm (спустя 1 день 1 час 38 минут)
   Post subject:
Reply with quote

Rumata:
Почему в таком случае название темы "Русские кавычки", хотя гораздо правильнее было бы писать «Русские кавычки» ;)
Back to top
View user's profile Send private message Send e-mail
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Thu Apr 15, 2004 8:53 pm (спустя 2 минуты)
   Post subject:
Reply with quote

yUAC:
(-:
Back to top
View user's profile Send private message Send e-mail
7.3.
Участник форума



Joined: 01 Nov 2003
Posts: 1142
Карма: 37
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 12:14 pm (спустя 2 дня 15 часов 21 минуту)
   Post subject:
Reply with quote

Выходит такие кавычки есть только в русском языке? Или наши что ли их придумали?
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 1:09 pm (спустя 54 минуты)
   Post subject:
Reply with quote

7.3. wrote:
 только
Либо «такие», либо “такие”. Но никак иначе. Читайте Ководство Лебедева.
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 1:19 pm (спустя 9 минут)
   Post subject:
Reply with quote

плохо то, что в тексте пользователя невозможно однозначно определить
когда следует заменять "" на &quot;, а когда - на «» (то есть пару &laquo; &raquo;)
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 1:26 pm (спустя 6 минут)
   Post subject:
Reply with quote

Rumata wrote:
невозможно
Ну, может и можно но очень сложный алгоритм получится. Пусть сам человек этим занимается. Особенно, когда приходится строить такие вот предложения: «текст текст "неоднозначное понятие"» — так намного хуже: «текст текст «неоднозначное понятие»».
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 1:29 pm (спустя 3 минуты)
   Post subject:
Reply with quote

Ant wrote:
Пусть сам человек этим занимается
согласен: это получится несколько десятков строк кода - ради этого не стоит городить огород. в первом постинге я предложил функцию, как альтернативу HtmlSpecialChars (относительно кавычек)
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 18, 2004 7:49 pm (спустя 6 часов 19 минут)
   Post subject:
Reply with quote

www.artlebedev.ru/tools/typograf/about/
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 8:13 pm (спустя 24 минуты)
   Post subject:
Reply with quote

Quote:
С 2002 года программа бесплатно доступна на нашем сайте
ну и где он там? скачать или к ним коннектиться? а если нужен только для интранет-сайта?
Back to top
View user's profile Send private message
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6840
Карма: 131
   поощрить/наказать


PostPosted: Sun Apr 18, 2004 8:19 pm (спустя 6 минут)
   Post subject:
Reply with quote

Rumata wrote:
ну и где он там?
www.artlebedev.ru/tools/typograf/ .
Back to top
View user's profile Send private message Send e-mail
Сергей Потехин
Участник форума



Joined: 25 Aug 2003
Posts: 178
Карма: 0
   поощрить/наказать

Location: Забайкалье, Чита

PostPosted: Fri Apr 01, 2005 4:11 pm (спустя 11 месяцев 13 дней 19 часов 52 минуты; написано за 2 минуты 11 секунд)
   Post subject:
Reply with quote

Rumata
А вот такую нашел ошибку, если обработать такой код:
Code (html): скопировать код в буфер обмена
<table (december.com/html/4/element/table.html) border="1" width="100%" id="table1"> (december.com/html/4/element/.html)
То первая кавычка заменяется, а вторая нет.(После 1, знака процента и т.д.)
Как можно это исправить?
Back to top
View user's profile Send private message
Андрей Анатольич (Venom)
Участник форума



Joined: 02 Sep 2003
Posts: 28
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Tue May 17, 2005 1:32 pm (спустя 1 месяц 15 дней 21 час 20 минут; написано за 34 секунды)
   Post subject:
Reply with quote

Юзайте наздоровье!
Code (php): скопировать код в буфер обмена
<?
$n = '<table border="1" width="100%" id="table1">';

// string rusDoubleQuotes(string LINE)
function rusDoubleQuotes($string) {
        return preg_replace (www.php.net/preg_replace)("/(?:\"([^\"]+)\")/","&laquo;\\1&raquo;",$string);
}

echo (www.php.net/echo) htmlspecialchars(rusDoubleQuotes($n)), '<br>';
echo (www.php.net/echo) rusDoubleQuotes('  "!"   " .'), '<br>';
echo (www.php.net/echo) rusDoubleQuotes('  "!"   "".'), '<br>';
?>
Результат:

<table border=&laquo;1&raquo; width=&laquo;100%&raquo; id=&laquo;table1&raquo;>
Он Сказал «Поехали!» и запил " водой.
Он Сказал «Поехали!» и запил «водой».
Back to top
View user's profile Send private message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Tue May 17, 2005 4:57 pm (спустя 3 часа 24 минуты; написано за 34 секунды)
   Post subject:
Reply with quote

Сергей Потехин, Андрей Анатольич (Venom),
вы мне только скажите зачем русские кавычки в коде???!!!
Back to top
View user's profile Send private message
Venom_
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Dec 30, 2005 9:27 am (спустя 7 месяцев 12 дней 16 часов 30 минут; написано за 14 секунд)
   Post subject:
Reply with quote

Это просто пример
Back to top
dench
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Jan 11, 2006 11:00 pm (спустя 12 дней 13 часов 33 минуты; написано за 6 секунд)
   Post subject:
Reply with quote

spectator.ru/technology/php/quotation_marks_stike_back
Back to top
Олег Тарусов
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Mar 21, 2006 1:00 pm (спустя 2 месяца 9 дней 13 часов 59 минут; написано за 17 секунд)
   Post subject:
Reply with quote

Quote:
«текст текст «неоднозначное понятие»»
Надо: ]«текст текст «неоднозначное понятие»
Back to top
Олег Тарусов
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Mar 21, 2006 1:05 pm (спустя 4 минуты; написано за 10 секунд)
   Post subject:
Reply with quote

"]" случайно написал
Back to top
Nick Bubelo
Заглянувший



Joined: 26 Feb 2005
Posts: 3
Карма: 0
   поощрить/наказать

Location: Днепропетровск

PostPosted: Fri May 19, 2006 9:51 am (спустя 1 месяц 28 дней 20 часов 46 минут; написано за 8 минут 49 секунд)
   Post subject:
Reply with quote

7.3. wrote:
Выходит такие кавычки есть только в русском языке? Или наши что ли их придумали?
Нет, такие «елочки» есть еще и во французском. Собственно говоря, они в русский оттуда и пришли.
Ant wrote:
Либо «такие», либо “такие”. Но никак иначе. Читайте Ководство Лебедева.
Не совсем так:
либо «такие» ( «елочки» -- &laquo; ... &raquo; ),
либо такие ( „лапки“ -- &bdquo; ... &ldquo; )
„Лапки“ обычно используются в том случае, если требуется "закавычить" текст внутри текста, уже "закавыченного" «елочками».
E.g.:
Quote:
Агентство ИТАР ТАСС сообщило: «Он сказал: „Поехали!“»
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML