Перейти к контенту

Типографика для IPB


Jax

Рекомендуемые сообщения

$txt = preg_replace( "#\"(.+?)\"#", "«\\1»", $txt );

Теперь парсит нормально если в строчке 2 зоны с кавычкамИ, но мултистрочность пропала..

"test

test

test" не воркает

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 96
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Ctaiz, да, правильною

 

Здесь будет проблема, если в кавычки будут браться стихи, разбитые на несколько строк. Но думаю, что и это поправим.

 

Добавлено позже:

Если заменить

$txt = preg_replace( "#\"(.+?)\"#", "«\\1»", $txt );

На

$txt = preg_replace( "#\"(\S+)\"#", "«\\1»", $txt );

То будет и стихи парсить, но и простые одинарные кавычки " в textarea.

Ссылка на комментарий
Поделиться на других сайтах

Да, тут форум всё парсит.. я в таких случаях обвожу первую букву, и делаю ёё черным цветом. :D)

 

Поставил. работает в большинстве хорошо, только вот.. пример:

 

я уже писал о «Thank You for Smoking", руский перевод названия " Здесь курят»

 

Не правильно расставило(

 

Классно было бы если бы мод различал внутренние и внешние и все дела....

Ссылка на комментарий
Поделиться на других сайтах

и еще пример с одного поста

Вообще, очень много такого было необычного: поездки на картошку и разбавленное пиво (не, ну правда было вкусно!),

«Взвейтесь кострами бочки с бензином, мы пионеры - дети грузинов" и "Кто курит Яву и Пегас, тому любая баба даст" и »Опал -

затянулся и упал" Да, мы были очень необычными людьми.

 

Идея мода, конечно, очень хорошая, но нужно будет написать что-то более посложнее дабы корректно детектило начало и конец цитаты.....

 

пока снял(

Ссылка на комментарий
Поделиться на других сайтах

Вот любят люди велики изобретать ))

Есть же класс для правильных кавычек и прочего на sf.net называется типографик юзайте его

 

Добавил:

Вот он:

http://sourceforge.net/projects/freetypo/

Ссылка на комментарий
Поделиться на других сайтах

xRay, во первых, после кавычки не должно быть пробела

названия " Здесь курят»
, во второых, первый пост исправлен, попробуй поставить тот вариант, что там.
Есть же класс для правильных кавычек и прочего на sf.net называется типографик юзайте его

Это класс Артемия Лебедева, его с его сайта можно скачать :D Далеко не ходить...

Идея мода, конечно, очень хорошая, но нужно будет написать что-то более посложнее дабы корректно детектило начало и конец цитаты.....

ага

Ссылка на комментарий
Поделиться на других сайтах

«адин-два» «три четыре»

 

*радуеццо* надо же, всего лишь один знак вопроса - и проблема решена)))))

 

посибо!!))

 

было бы неплохо еще решить вопрос при переносе с одной строки на другую.. но все равно, классна)

 

 

жалко что тут нету кнопки Спасибо. я бы ёё пару раз нажал ))

Ссылка на комментарий
Поделиться на других сайтах

хы) воще-то я собиралсо отредактировать свой пост, так как решил добавить следующее:

 

что-то не вижу разницы в длине между тире и дефисом.. выглядят - одинаково...или я подслеповатым стал... ы)

 

можт форум запарсил?

 

/оффтопный вопрос,

а IBR имеет какой-то реальный офис и месторасположение, или же это просто, кхм, форум в сети с (оплачиваемыми) работниками?))

Ссылка на комментарий
Поделиться на других сайтах

что-то не вижу разницы в длине между тире и дефисом.. выглядят - одинаково...или я подслеповатым стал... ы)

Я думаю, что последнее :D

 

1) тире —

2) дефис -

Ссылка на комментарий
Поделиться на других сайтах

Аха! при моем мелком размере фонта в FF, они почему-то выглядели идентичными)))

(когда сделал больше шрифт - тогда и увидел).

 

вот)) ок, перестану тебя доставать)))

 

/отошел

Ссылка на комментарий
Поделиться на других сайтах

HTML-код кавычки верстается форумом всегда в нижнем регистре.

жжошь ;)

Что тебе не так? -)

 

Да, с переносом надо думать - пойду к Сонгу :D

К кому угодно, только не ко мне -)

 

Вот тогда можешь и не пользовать нижеследующий код:

// idea (c) artnewage.com, jAx
// Written by Destruction.
// Time: 31.10.2006 15:00 GMT+3
$txt = str_replace('"', '"', $txt);
while( preg_match('/(^|[\s\t\r\n])"(\S)(.*)(\S)"([\s\t\r\n,\.!\?]|$)/sUD', $txt) ){
$txt = preg_replace('/(^|[\s\t\r\n])"(\S)(.*)(\S)"([\s\t\r\n,\.!\?]|$)/sUD',
	"\\1«\\2\\3\\4»\\5", $txt);
}

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

 

Для форумов перешедших на UTF-кодировку, вероятно понадобится так же модификатор /u.

 

PS: Даже не спрашивайте, как оно работает - сам удивляюсь! Посмотрел все примеры, которые были в топике - с каждым из них корректно отработало.

 

PPS: Для воплощения первой моей идеи, можно попробывать написать покруче регулярку - но у меня не получилось, т.к. я придумал эту. Ещё есть отличная функция preg_replace_callback - очень удобно через неё отлаживать, хотя с тем же успехом можно использовать флаг /e.

Изменено пользователем Destruction
Ссылка на комментарий
Поделиться на других сайтах

Можно сразу в коде заменнить &laquo на «, а не ждать пока пропарсится)

не работает вариант

"полу"-"человек"

Но это не суть важно :D

«полу"-"человек»

Ссылка на комментарий
Поделиться на других сайтах

"полу"-"человек"
Неграмотно написано. Кто Вас так писать учил? У меня скрипт, который делает грамотных людей - ещё более грамотными -)

 

Данное слово - вообще не нуждается в кавычках, не считая случая, когда оно цитируется, а когда оно цитируется - обрамляется всего-лишь двумя кавычками.

 

Можно сразу в коде заменнить &laquo на «, а не ждать пока пропарсится)

Угу, можно много чего - только вот PHP-файл может быть совершенно в различных кодировках, не совсем совпадающих с кодировкой непосредственно форума, что приведёт к проблемам.

 

А я делаю варианты - для всех, чтобы не вызывать никаких проблем.

 

И ещё - &laquo - парсится на клиентской стороне, так, что замена его на непосредственно символ в любом случае вызовет проблемы у пользователей.

Изменено пользователем Destruction
Ссылка на комментарий
Поделиться на других сайтах

Я знаю что пишется полу-человек без кавычек, я для примера.

Допустим «Ссылка_для_локальных_пользователей»-"Ссылки_для_тех_кто_с_инета" не будет правильно парсится :D

впрочем не нужно почти.

Ссылка на комментарий
Поделиться на других сайтах

Угу, потому, что там не дефис должен быть, а тире.

 

Я изучил ОЧЕНЬ много русских фраз, перед написанием правил для скрипта - так, что он работает исключительно с грамотным текстом, собственно это и позволяет ему достигать наиболее точных результатов.

Ссылка на комментарий
Поделиться на других сайтах

Пожалуйста.

 

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

 

КСТАТЕ! Проследи, чтобы в кодах и прочей лабуде - кавычки НЕ менялись!

Ссылка на комментарий
Поделиться на других сайтах

HTML-код кавычки верстается форумом всегда в нижнем регистре.

жжошь ;)

Что тебе не так? -)

 

Да, с переносом надо думать - пойду к Сонгу :D

К кому угодно, только не ко мне -)

 

Вот тогда можешь и не пользовать нижеследующий код:

// idea (c) artnewage.com, jAx
// Written by Destruction.
// Time: 31.10.2006 15:00 GMT+3
$txt = str_replace('"', '"', $txt);
while( preg_match('/(^|[\s\t\r\n])"(\S)(.*)(\S)"([\s\t\r\n,\.!\?]|$)/sUD', $txt) ){
$txt = preg_replace('/(^|[\s\t\r\n])"(\S)(.*)(\S)"([\s\t\r\n,\.!\?]|$)/sUD',
	"\\1«\\2\\3\\4»\\5", $txt);
}

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

 

Для форумов перешедших на UTF-кодировку, вероятно понадобится так же модификатор /u.

 

PS: Даже не спрашивайте, как оно работает - сам удивляюсь! Посмотрел все примеры, которые были в топике - с каждым из них корректно отработало.

 

PPS: Для воплощения первой моей идеи, можно попробывать написать покруче регулярку - но у меня не получилось, т.к. я придумал эту. Ещё есть отличная функция preg_replace_callback - очень удобно через неё отлаживать, хотя с тем же успехом можно использовать флаг /e.

В самом посте, без тегов quote и code - все нормально и стихи и простые строки. В коде ничего не парсится. А вот в цитате при добавлении текста в нее такого вида:

— asdsad "sadsad"
sadsad "sadsa
sadasd"

получаем:

— asdsad «sadsad"
sadsad "sadsa
sadasd»

Ссылка на комментарий
Поделиться на других сайтах

Это почему-то у тебя так, у меня не так !

 

// сам текст:

$txt = '— asdsad "sadsad"

sadsad "sadsa

sadasd"';

$txt = str_replace( '"', '&quote;', $txt ); // приведём строку к отпарсенному форумом виду

// далее - парсинг

while( preg_match('/(^|[\s\t\r\n])&quote;(\S)(.*)(\S)&quote;([\s\t\r\n,\.!\?]|$)/sUD', $txt) ){

$txt = preg_replace('/(^|[\s\t\r\n])&quote;(\S)(.*)(\S)&quote;([\s\t\r\n,\.!\?]|$)/sUD',

"\\1«\\2\\3\\4»\\5", $txt);

}

// далее - вывод на экран:

echo $txt;

/*

Result:

— asdsad «sadsad»

sadsad «sadsa

sadasd»

result ends.

*/

PS: Форум отпарсил мой код - в этом примере, я привёл полностью - не парсенный.

Изменено пользователем Destruction
Ссылка на комментарий
Поделиться на других сайтах

А ты так напиши:

$txt = '[quote]— asdsad "sadsad"
sadsad "sadsa
sadasd"[/quote]';

 

В посте я же написал, все нормально парсит, а в цитате проблемы.

Ссылка на комментарий
Поделиться на других сайтах

Вобщем так (тренировался на локалхосте, отлаживал, налаживал), берём следущий код и копипасти к себе (проверено, должно отработать верно):

<?php

// сам текст:

$txt = '— asdsad "sadsad"

sadsad "sadsa

sadasd"';

// приведём строку к отпарсеному форумом виду:

$txt = str_replace( '"' , '&quot;', $txt );

// далее - парсинг:

while( preg_match( '/(^|[\s\t\r\n\]])&quot;(\S)(.*)(\S)&quot;([\s\t\r\n,\.!\?\[]|$)/sUD', $txt ) ){

$txt = preg_replace( '/(^|[\s\t\r\n\]])&quot;(\S)(.*)(\S)&quot;([\s\t\r\n,\.!\?\[]|$)/sUD',

"\\1&laquo;\\2\\3\\4&raquo;\\5", $txt );

}

// далее - вывод на экран

echo $txt;

/*

Result:

— asdsad &laquo;sadsad&raquo;

sadsad &laquo;sadsa

sadasd&raquo;

*/

?>

Как видите - результат, который должен появится - тоже написан, я его скопипастил из своего.

 

ОБНОВЛЕНО !!! Смотрите обновлённую версию.

 

jAx - тебя прибить мало, за то, что даже не попробывал разобраться в принципе.

 

Всё работает отлично, несмотря на то, что я читаю через пост.

 

Будут ещё подобного рода проблемы - просто добавь новый символ в маску.

Изменено пользователем Destruction
Ссылка на комментарий
Поделиться на других сайтах

Так что мне разбираться :D Я говорю, что в цитате не работает. Я могу тоже сесть и начать писать ;) только это взялся же делать ты :)

 

Ты проверяй на форуме, непосредственно, а не отдельно в скриптах. Destruction, в цитате проверь!! А не в посте!

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.