Автор Тема: Наверно, распространенный вопрос...  (Прочитано 3604 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Отец Никон

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Привет всем.
У меня такая задача: есть форум. И при отсылке сообщения
надо проверить, закрыты ли в нем все тэги.
Подскажите, пожалуйста, как

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Проверка тэгов в сообщении форума
« Ответ #1 : 08 Января 2003, 22:32:35 »
perldoc perlre
Теги какого вида?
Если [ x ] [ / x ], то примерно так

my $mess1 = $mess;
while ($mess1 =~ s|\\[(\\w)\\]([^\\[\\]]*?)\\[\\/\\1]|$2|g) {};
print "Теги не закрыты или ошибка в тэгах"
  if (($mess1 =~ m|\\[\\w\\]|) || ($mess1 =~ m|\\[\\/\\w\\]|));
2B OR NOT 2B = FF

Оффлайн Отец Никон

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проверка тэгов в сообщении форума
« Ответ #2 : 09 Января 2003, 01:19:36 »
Спасибо, а можно как-то это приспособить и для тэгов <*> ? Замена соответствующих символов в этом коде не помогает.
Извиняюсь, но я в рег. выр-я никак пока не въеду.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Проверка тэгов в сообщении форума
« Ответ #3 : 09 Января 2003, 09:11:23 »
Цитировать
Спасибо, а можно как-то это приспособить и для тэгов <*> ?


my $mess1 = $mess;
while ($mess1 =~ s|<(\\S+)>([^<>]*?)<\\/\\1>|$2|g) {};
print "Теги не закрыты или ошибка в тэгах"
  if (($mess1 =~ m|<\\S+>|) || ($mess1 =~ m|<\\/\\S+>|));

+
perldoc perlre :)
2B OR NOT 2B = FF

Оффлайн Отец Никон

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проверка тэгов в сообщении форума
« Ответ #4 : 09 Января 2003, 11:55:21 »
Благодарю, Chs.
Не мог бы ты разъяснить мне этот код? Я все-таки стараюсь сам врубаться, а не использовать шаблоны.
И ещё, можно ли как-то соделать, чтобы не считались за ошибку не требующие закрытия тэги? (,
и тд.)?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Проверка тэгов в сообщении форума
« Ответ #5 : 09 Января 2003, 12:00:31 »
Цитировать
Не мог бы ты разъяснить мне этот код?

А что непонятного?
Цитировать

И ещё, можно ли как-то соделать, чтобы не считались за ошибку не требующие закрытия тэги? (,
и тд.)?

Можно, все можно.:)
2B OR NOT 2B = FF

Оффлайн Отец Никон

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проверка тэгов в сообщении форума
« Ответ #6 : 10 Января 2003, 10:53:25 »
Цитировать
Можно, все можно.

Подскажи, как?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Проверка тэгов в сообщении форума
« Ответ #7 : 10 Января 2003, 11:04:21 »
Цитировать
Подскажи, как?

Убрать их в начале проверки.
2B OR NOT 2B = FF

Оффлайн Отец Никон

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проверка тэгов в сообщении форума
« Ответ #8 : 10 Января 2003, 11:26:31 »
Убрать-то их можно, а как потом назад вставлять?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Проверка тэгов в сообщении форума
« Ответ #9 : 10 Января 2003, 11:41:45 »
Цитировать
Убрать-то их можно, а как потом назад вставлять?

А зачем вставлять? Проще сообщение скопировать и провести деструктивную проверку.
2B OR NOT 2B = FF

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28