22.06.2018, 23:37 [+3 UTC]
в нашей команде: 2 854 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
18.06.2018, 08:55

Последний вопрос:
22.06.2018, 22:40

Последний ответ:
22.06.2018, 09:23

Последняя рассылка:
22.06.2018, 17:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
26.09.2010, 14:58 »
kot31
Спасибо, вы меня очень выручили! [вопрос № 180011, ответ № 263195]
13.10.2012, 11:56 »
Александ Васильевич Бок
Огромное спасибо! [вопрос № 186657, ответ № 271579]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)]

Лучшие эксперты в этом разделе

Асмик Гаряка
Статус: Советник
Рейтинг: 34
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0
Хватов Сергей
Статус: Академик
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 66905
Раздел: • PHP / Perl / Python
Автор вопроса: Талипов А Н
Отправлена: 14.12.2006, 07:20
Поступило ответов: 1

Здравствуйте!

Что нужно, для того чтобы исправить обычные кавычки (") на парные («...»), между символом разрыва строки "\n"?

И как сделать ссылку из строки
[url=lib.ru]библиотека Максима Машкова[/url]
Точнее, как вообще обрабатывать подобные конструкции, ведь есть bbc с разными параметрами?

Состояние: Консультация закрыта

Ответ # 131697 от Денис Сергеевич

Здравствуйте, Талипов А Н!

Вы можете воспользоваться регулярными выражениями. Обратитесь, например, к мануалу по функции preg_replace - http://ru.php.net/manual/ru/function.preg-replace.php.

В приложении я поместил пример из книги "PHP5 на примерах" (И. Симдянов, М. Кузнецов, С. Голышев, стр. 149), где показано, как конвертировать теги [url][/url] в <a href></a>.

Приложение:


Консультировал: Денис Сергеевич
Дата отправки: 14.12.2006, 22:26

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 66905

Посетитель

ID: 2743

# 1

= общий = | 14.12.2006, 15:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Необходимо использовать регулярные выражения. задайте вопрос сюда: http://rusfaq.ru/issues/5/3/367 Ну, можно ещё строку просматривать по символьно... и сравнивать, есть ли совпадение... но лучше, имхо, регулярные выражения.


Посетитель

ID: 18117

# 2

= общий = | 14.12.2006, 15:51 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Я с начало тоже подумал о regexp. Но порой они выдают такие фокусы!... Посимвольный перебор слишком сложный выйдет. Тут как минимум два этапа, просмотр и правка. А если для всех штук пихать в одну функцию, вообще будет мясо. Очем говорю знаю, сам такое писал.


Посетитель

ID: 22917

# 3

= общий = | 15.12.2006, 13:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

наyandexил HTML_parser_BB: http://wboard.ru/topic233.html или http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=11806 посмотрите, может подойдет, как работает не знаю, не проверял, но по крайней мере регулярные выражения оттуда вытащить можно


Посетитель

ID: 22917

# 4

= общий = | 15.12.2006, 13:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Кстати, насчет кавычек, что значит "между символом разрыва строки "\n"" ?


Посетитель

ID: 18117

# 5

= общий = | 15.12.2006, 14:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Я имею в виду, что если кавычки в одном абзаце. (строке после нажатия enter и до следующего нажатия, то исправить, а если разные строки, то неисправлять). С этими кавычками, да и не только с ними вообще нужно очень аккуратно обращаться, иначе можно повредить сам текст. Всё больше сомневаюсь в том, что с этим может справится регулярное выражение. Тут нужна программа с серьёзным анализатором. И не на php её писать. Когда я имел в виду не только кавычки, я писал о символах выбора шрифтов. Сейчас популярен BBCode, он проще в обработке. Но есть более удобный формат оформления. * жирный * ' курсивом ' Остальное точно не помню, да и нет строгово описания.


Посетитель

ID: 2743

# 6

= общий = | 15.12.2006, 14:59 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Вообще то с этим регулярное выражение справится. Вам просто нужно сказать, что идет кавычка, потом не должно быть "\n" (& #13; & #10;), и снова кавычка. Так вот, если между кавычками будет перенос строки, то ничего не произойдет.


Посетитель

ID: 22917

# 7

= общий = | 18.12.2006, 09:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Посмотрите, как вариант, например функция: function rquo($s){ return preg_replace("/('|\")(.*?)\\1/","\xAB\\2\xBB",$s); } возвратит $s в которой все спаренные кавычки между которыми нет \n, заменяются на «», вложенные кавычки не обрабатываются. Обработка вложенных кавычек немного сложнее: function rquo2_callback($m){ //используется в rquo2 для обработки вложенных кавычек, вынес для наглядности, в принципе, чтобы не засорять namespace можно ее создать анонимно(используя create_function) return "\xAB".rquo2($m[2])."\xBB"; } function rquo2($s){ return preg_replace_callback("/('|\")(.*?)\\1/",'rquo2_callback',$s); }


Посетитель

ID: 18117

# 8

= общий = | 18.12.2006, 09:52 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Спасибо! Это весьма гружоно, сейчас попробую разобраться. Кстати для апострофа, есть другие открывающие и закрывающие символы, так, что мне кажется всё должно быть ещё сложнее. Хотя со второй функцией я и так в shutdown. И вообще, что это за \xab \xbb и почему \\1 \\2, а не \1 \2? Как раз сейчас разбираюсь с regexp. Лучше самому научиться, чем каждый раз надоедать людям. http://rusfaq.ru/info/question/67247.


Посетитель

ID: 18117

# 9

= общий = | 18.12.2006, 10:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Да! Вот ещё, задачка-то оказалась даже сложнее. Нужно исправлять кавычки между тегами, но не в нутри их. Т.е., чтобы некоторые теги были вообще невидимыми, а другие прерывали обработку также как \n. например чтобы было «<a href="lib.ru">lib.ru</a>» сдесь обработка сработала, а дальше нет "</p> <h1>привет!</h1> <p>"ля ля ля.... Опять берёт сомнение, что с этим справится regexp.


Посетитель

ID: 22917

# 10

= общий = | 18.12.2006, 10:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

\xAB и \xBB - шестнадцатиричное представление, символов « и », а \\1 и \\2 - ссылки на 1-ю и 2-ю подмаски. Разбирайтесь с regexp, и увидите, что они, конечно, не все могут, но инструмент очень мощный и полезный


Посетитель

ID: 18117

# 11

= общий = | 18.12.2006, 10:45 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Спасибо. Я привык к другим обозначениям и не догадался, что это всего лишь шестнадцатиричное. Действительно р.в. очень мощный инструмент. Я уже в этом убедился. И как раньше мог без него жить. В dos и finereader жутко упрощенные варианты, и по этому не считаются.

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14716 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018