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

Типографика для 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, в цитате проверь!! А не в посте!

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

Зарузка...

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

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

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