The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"PHP & regular expressions"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"PHP & regular expressions"
Сообщение от NetKnight emailИскать по авторуВ закладки on 26-Фев-04, 19:50  (MSK)
Пишу програмку по разбору HTML, встала такая задача:
Например выбрать фразу <font color=#00FFFF size=5>Some text</font>
вот что примерно должно быть кодом:


preg_match("/<font[a-zA-Z0-1 #=]+>[a-zA-Z0-1  _-,.]+<\/font>/",src,dst);

Вроде всё хорошо и правильно! Но в верхнем примере параметры не обрамляются кавычками! А как сделать так, чтоб среди символов, которые находятся в квадратных скобках оказались символы двойной кавычки и квадратной скобки? Пробовал вставлять со слешем - ошибка
Я не знаю, сколько параметров будет в данном теге, по этому мне надо написать так. Кто наступал на эти грабли?

Вот так выглядит пример строки которую надо выбрать: <font color="#00FFFF" size="5">Some text</font>

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "PHP & regular expressions"
Сообщение от NetKnight emailИскать по авторуВ закладки on 26-Фев-04, 19:52  (MSK)
ТАм в переменных я пропустил значки $, но это не меняет суть вопроса :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "PHP & regular expressions"
Сообщение от vnp emailИскать по авторуВ закладки on 26-Фев-04, 21:06  (MSK)
>Пишу програмку по разбору HTML, встала такая задача:
>Например выбрать фразу <font color=#00FFFF size=5>Some text</font>
>вот что примерно должно быть кодом:
>
>
>preg_match("/<font[a-zA-Z0-1 #=]+>[a-zA-Z0-1  _-,.]+<\/font>/",src,dst);
>
>Вроде всё хорошо и правильно! Но в верхнем примере параметры не обрамляются
>кавычками! А как сделать так, чтоб среди символов, которые находятся в
>квадратных скобках оказались символы двойной кавычки и квадратной скобки? Пробовал вставлять
>со слешем - ошибка
>Я не знаю, сколько параметров будет в данном теге, по этому мне
>надо написать так. Кто наступал на эти грабли?

Это пока не ответ, а рекомендация. Из самых общих соображений надо не перечислять "допустимые" символы (которых _много_), а наоборот, отрицать единственный "недопустимый":
    <font[^>]+>[^<]+<\/font>
должно сработать.

По вопросу: правая квадратная скобка обязана быть первой в перечислении:
    []все_остальное]
Кавычка, кажется, никаких особых мер не требует.


>Вот так выглядит пример строки которую надо выбрать: <font color="#00FFFF" size="5">Some text</font>


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "PHP & regular expressions"
Сообщение от NetKnight emailИскать по авторуВ закладки on 27-Фев-04, 02:55  (MSK)
отрицать единственный "недопустимый":
>    <font[^>]+>[^<]+<\/font>
>должно сработать.
>
>По вопросу: правая квадратная скобка обязана быть первой в перечислении:
>    []все_остальное]
>Кавычка, кажется, никаких особых мер не требует.

Спасибо, с квадратной скобкой ясно, кстати, если нужны обе, то обе вперёд?
Отрицать символы, нежели набирать допустимые, конечно проще тут, но всётаки, если возникнет необходимость включить кавычки в набор, то как это сделать?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "PHP & regular expressions"
Сообщение от vnp emailИскать по авторуВ закладки on 27-Фев-04, 07:21  (MSK)
>отрицать единственный "недопустимый":
>>    <font[^>]+>[^<]+<\/font>
>>должно сработать.
>>
>>По вопросу: правая квадратная скобка обязана быть первой в перечислении:
>>    []все_остальное]
>>Кавычка, кажется, никаких особых мер не требует.
>
>Спасибо, с квадратной скобкой ясно, кстати, если нужны обе, то обе вперёд?

Да нет... смотрите -- ']' синтаксически закрывает всю конструкцию; чтобы дать ей литеральное значение, нужны особые меры (в данном случае, позиционирование). '[', напротив, уже никакой роли не играет, и может стоять где ей хочется.

>Отрицать символы, нежели набирать допустимые, конечно проще тут, но всётаки, если возникнет
>необходимость включить кавычки в набор, то как это сделать?

*Кажется*, ее никак особо экранировать не надо, но с понмелья чего только не покажется.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "PHP & regular expressions"
Сообщение от NetKnight emailИскать по авторуВ закладки on 27-Фев-04, 12:04  (MSK)

>Да нет... смотрите -- ']' синтаксически закрывает всю конструкцию; чтобы дать ей
>литеральное значение, нужны особые меры (в данном случае, позиционирование). '[', напротив,
>уже никакой роли не играет, и может стоять где ей хочется.

Понял.

>>Отрицать символы, нежели набирать допустимые, конечно проще тут, но всётаки, если возникнет
>>необходимость включить кавычки в набор, то как это сделать?
>
>*Кажется*, ее никак особо экранировать не надо, но с понмелья чего только
>не покажется.

Если кавычки никак не "экранировать", то это будет означать, что строковая фраза закончилась, что вызовет ошибку.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру