Ctaiz Опубликовано 30 Октября 2006 Жалоба Поделиться Опубликовано 30 Октября 2006 $txt = preg_replace( "#\"(.+?)\"#", "«\\1»", $txt );Теперь парсит нормально если в строчке 2 зоны с кавычкамИ, но мултистрочность пропала.."testtesttest" не воркает Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 30 Октября 2006 Автор Жалоба Поделиться Опубликовано 30 Октября 2006 Ctaiz, да, правильною Здесь будет проблема, если в кавычки будут браться стихи, разбитые на несколько строк. Но думаю, что и это поправим. Добавлено позже:Если заменить$txt = preg_replace( "#\"(.+?)\"#", "«\\1»", $txt );На $txt = preg_replace( "#\"(\S+)\"#", "«\\1»", $txt );То будет и стихи парсить, но и простые одинарные кавычки " в textarea. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Зверик- Опубликовано 30 Октября 2006 Жалоба Поделиться Опубликовано 30 Октября 2006 Да, тут форум всё парсит.. я в таких случаях обвожу первую букву, и делаю ёё черным цветом. ) Поставил. работает в большинстве хорошо, только вот.. пример: я уже писал о «Thank You for Smoking", руский перевод названия " Здесь курят» Не правильно расставило( Классно было бы если бы мод различал внутренние и внешние и все дела.... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Зверик- Опубликовано 30 Октября 2006 Жалоба Поделиться Опубликовано 30 Октября 2006 и еще пример с одного постаВообще, очень много такого было необычного: поездки на картошку и разбавленное пиво (не, ну правда было вкусно!), «Взвейтесь кострами бочки с бензином, мы пионеры - дети грузинов" и "Кто курит Яву и Пегас, тому любая баба даст" и »Опал - затянулся и упал" Да, мы были очень необычными людьми. Идея мода, конечно, очень хорошая, но нужно будет написать что-то более посложнее дабы корректно детектило начало и конец цитаты..... пока снял( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Вот любят люди велики изобретать ))Есть же класс для правильных кавычек и прочего на sf.net называется типографик юзайте его Добавил:Вот он:http://sourceforge.net/projects/freetypo/ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 xRay, во первых, после кавычки не должно быть пробела названия " Здесь курят», во второых, первый пост исправлен, попробуй поставить тот вариант, что там.Есть же класс для правильных кавычек и прочего на sf.net называется типографик юзайте егоЭто класс Артемия Лебедева, его с его сайта можно скачать Далеко не ходить...Идея мода, конечно, очень хорошая, но нужно будет написать что-то более посложнее дабы корректно детектило начало и конец цитаты.....ага Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Зверик- Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 «адин-два» «три четыре» *радуеццо* надо же, всего лишь один знак вопроса - и проблема решена))))) посибо!!)) было бы неплохо еще решить вопрос при переносе с одной строки на другую.. но все равно, классна) жалко что тут нету кнопки Спасибо. я бы ёё пару раз нажал )) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 Да, с переносом надо думать - пойду к Сонгу >посибо!!))Не за что Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Зверик- Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 хы) воще-то я собиралсо отредактировать свой пост, так как решил добавить следующее: что-то не вижу разницы в длине между тире и дефисом.. выглядят - одинаково...или я подслеповатым стал... ы) можт форум запарсил? /оффтопный вопрос,а IBR имеет какой-то реальный офис и месторасположение, или же это просто, кхм, форум в сети с (оплачиваемыми) работниками?)) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 что-то не вижу разницы в длине между тире и дефисом.. выглядят - одинаково...или я подслеповатым стал... ы)Я думаю, что последнее 1) тире —2) дефис - Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Зверик- Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Аха! при моем мелком размере фонта в FF, они почему-то выглядели идентичными)))(когда сделал больше шрифт - тогда и увидел). вот)) ок, перестану тебя доставать))) /отошел Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ctaiz Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 "testtesttest"У меня не парсит Хз что делать.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 (изменено) HTML-код кавычки верстается форумом всегда в нижнем регистре.жжошь Что тебе не так? -) Да, с переносом надо думать - пойду к Сонгу К кому угодно, только не ко мне -) Вот тогда можешь и не пользовать нижеследующий код:// 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. Изменено 31 Октября 2006 пользователем Destruction Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ctaiz Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Можно сразу в коде заменнить « на «, а не ждать пока пропарсится)не работает вариант"полу"-"человек"Но это не суть важно «полу"-"человек» Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 (изменено) "полу"-"человек"Неграмотно написано. Кто Вас так писать учил? У меня скрипт, который делает грамотных людей - ещё более грамотными -) Данное слово - вообще не нуждается в кавычках, не считая случая, когда оно цитируется, а когда оно цитируется - обрамляется всего-лишь двумя кавычками. Можно сразу в коде заменнить « на «, а не ждать пока пропарсится)Угу, можно много чего - только вот PHP-файл может быть совершенно в различных кодировках, не совсем совпадающих с кодировкой непосредственно форума, что приведёт к проблемам. А я делаю варианты - для всех, чтобы не вызывать никаких проблем. И ещё - « - парсится на клиентской стороне, так, что замена его на непосредственно символ в любом случае вызовет проблемы у пользователей. Изменено 31 Октября 2006 пользователем Destruction Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ctaiz Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Я знаю что пишется полу-человек без кавычек, я для примера. Допустим «Ссылка_для_локальных_пользователей»-"Ссылки_для_тех_кто_с_инета" не будет правильно парсится впрочем не нужно почти. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Угу, потому, что там не дефис должен быть, а тире. Я изучил ОЧЕНЬ много русских фраз, перед написанием правил для скрипта - так, что он работает исключительно с грамотным текстом, собственно это и позволяет ему достигать наиболее точных результатов. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 Чего вы здесь проверяете эту работу? )) Причем здесь этот форум? Destruction, вечерком гляну, спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Пожалуйста. Принцип прост - он ориентируется на символ перед кавычкой и после кавычки, исходя из чего и делает замену. Вообще - можно разбить на две регулярки, но тогд кавычки могут начать меняться там, где менятся им не нужно.. КСТАТЕ! Проследи, чтобы в кодах и прочей лабуде - кавычки НЕ менялись! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 HTML-код кавычки верстается форумом всегда в нижнем регистре.жжошь Что тебе не так? -) Да, с переносом надо думать - пойду к Сонгу К кому угодно, только не ко мне -) Вот тогда можешь и не пользовать нижеследующий код:// 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» Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 (изменено) Это почему-то у тебя так, у меня не так ! // сам текст:$txt = '— asdsad "sadsad"sadsad "sadsasadasd"';$txt = str_replace( '"', '"e;', $txt ); // приведём строку к отпарсенному форумом виду// далее - парсингwhile( preg_match('/(^|[\s\t\r\n])"e;(\S)(.*)(\S)"e;([\s\t\r\n,\.!\?]|$)/sUD', $txt) ){ $txt = preg_replace('/(^|[\s\t\r\n])"e;(\S)(.*)(\S)"e;([\s\t\r\n,\.!\?]|$)/sUD', "\\1«\\2\\3\\4»\\5", $txt);}// далее - вывод на экран:echo $txt;/*Result:— asdsad «sadsad»sadsad «sadsasadasd» result ends.*/PS: Форум отпарсил мой код - в этом примере, я привёл полностью - не парсенный. Изменено 31 Октября 2006 пользователем Destruction Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 А ты так напиши:$txt = '[quote]— asdsad "sadsad" sadsad "sadsa sadasd"[/quote]'; В посте я же написал, все нормально парсит, а в цитате проблемы. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 (изменено) Вобщем так (тренировался на локалхосте, отлаживал, налаживал), берём следущий код и копипасти к себе (проверено, должно отработать верно):<?php// сам текст:$txt = '— asdsad "sadsad" sadsad "sadsa sadasd"';// приведём строку к отпарсеному форумом виду:$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 );}// далее - вывод на экранecho $txt;/*Result: — asdsad «sadsad» sadsad «sadsa sadasd» */?>Как видите - результат, который должен появится - тоже написан, я его скопипастил из своего. ОБНОВЛЕНО !!! Смотрите обновлённую версию. jAx - тебя прибить мало, за то, что даже не попробывал разобраться в принципе. Всё работает отлично, несмотря на то, что я читаю через пост. Будут ещё подобного рода проблемы - просто добавь новый символ в маску. Изменено 31 Октября 2006 пользователем Destruction Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 31 Октября 2006 Автор Жалоба Поделиться Опубликовано 31 Октября 2006 Так что мне разбираться Я говорю, что в цитате не работает. Я могу тоже сесть и начать писать только это взялся же делать ты Ты проверяй на форуме, непосредственно, а не отдельно в скриптах. Destruction, в цитате проверь!! А не в посте! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ctaiz Опубликовано 31 Октября 2006 Жалоба Поделиться Опубликовано 31 Октября 2006 Исправишь одно появится другое...""мега"-кавычи"Кавычки внутрение сейчас не парсются Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.