Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » регулярные или както еще?

Ответить
Настройки темы
регулярные или както еще?

Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: E-mail
Дата: 19-03-2005
Описание: орфография
а как выцепить из текста, в масив, все теги button с атрибутом disabled и все что между ним (<button disabled>все что между ним</button>)?

причем таких тегов может быть очень много и все они могут содержать дополнительные совершенно не одинаковые атрибуты или вообще без атрибутов: <button disabled>g</button>kl<button disabled></button>jghjklh <button value=23432 size=fgkjheop color=kjjkh disabled></button>

нужно все вывести в массив...

т.е.
$mass[]="<button disabled если_есть_атрибуты>если_чтото_было_между_ним</button>";

подскажите как плызз..

Отправлено: 16:26, 19-03-2005

 

Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


vadimiron
а если комбинацию надо повторить несколько раз?
т.е. например что такое <button[^>] повторяется семь раз?

-------
Основы HTML | Конференции


Отправлено: 01:26, 21-03-2005 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 1405
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата:
и вообще что ето такой за знак вопроса?
А еще знак вопроса означает поиск минимально возможного числа символов.

preg_match('/<button.*?disabled>(.*?)<\/button>/',$text, $mass);
Вот такое выражение значит:
- найти минимальное количество элементов стоящих от <button до disabled
- найти и запомнить в mass минимальное количество элементов, стоящих от disabled> до </button>

Последний раз редактировалось mrcnn, 21-03-2005 в 02:01.


Отправлено: 01:54, 21-03-2005 | #12


Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


mrcnn
и как это понять минемально?
минемальней чем что? и без чего?

-------
Основы HTML | Конференции


Отправлено: 02:07, 21-03-2005 | #13


Ветеран


Сообщения: 1405
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата:
mrcnn
и как это понять минемально?
минемальней чем что? и без чего?
.* значит - любое количество элементов
По умолчанию происходит поиск максимально возможного числа элементов включаемых в .*

Например, если в переменной записано следующее:
$text="<button disabled>g</button>kl<button disabled></button>jghjklh button value=23432 size=fgkjheop color=kjjkh disabled></button>";
И нам нужно найти текст от <button до первой встречающейся после него </button>

Выражение preg_match('/<button.*<\/button>/',$text, $mass); сработает таким образом, что в первый .* будет включено все стоящее от первой < button до последней </button>. То есть произойдет поиск максимально возможного числа элементов стоящего между <button и </button>.
Чтобы такого не произошло и был найден текст до первой </button> (это значит, что надо искать минимально возможное число элементов между <button и </button>), нужно поставить знак вопроса после .* и таким образом, получаем preg_match('/<button.*?<\/button>/',$text, $mass);

Для наглядности выполни и сравни результаты 2 скриптов:

Первый:
PHP код: Выделить весь код

$text="<button disabled>g</button>kl<button disabled></button>jghjklh <button value=23432 size=fgkjheop color=kjjkh disabled></button>";

preg_match('/<button.*<\/button>/',$text$mass);
print 
$mass[0]; 

Второй
PHP код: Выделить весь код

$text="<button disabled>g</button>kl<button disabled></button>jghjklh <button value=23432 size=fgkjheop color=kjjkh disabled></button>";

preg_match('/<button.*?<\/button>/',$text$mass);
print 
$mass[0]; 

Разница между скриптами только в знаке вопроса.

Чтобы сделать это:
Цитата:
а как выцепить из текста, в масив, все теги button с атрибутом disabled и все что между ним (<button disabled>все что между ним</button>)?
можно использовать выражение preg_match_all('/<button.*?disabled>(.*?)<\/button>/',$text, $mass);
(Я привел раньше неправильный вариант, где знак вопроса стоял за пределами скобок)

PHP код: Выделить весь код

$text="<button disabled>g</button>kl<button disabled></button>jghjklh <button value=23432 size=fgkjheop color=kjjkh disabled></button>";

preg_match_all('/<button.*?disabled>(.*?)<\/button>/',$text$mass);
foreach(
$mass as $i)
    foreach (
$i as $j)
        echo 
$j."\n"


Последний раз редактировалось mrcnn, 21-03-2005 в 03:24.


Отправлено: 02:51, 21-03-2005 | #14



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » регулярные или както еще?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Router - [решено] Проблема с кабелем или чем то еще... NADVooDoo Сетевое оборудование 5 28-12-2008 16:55
Дергается изображение. Виновата видеокарта или чтото еще ? Shiroky Непонятные проблемы с Железом 7 25-08-2008 20:34
Одна из программ или еще что-то просится в интернет SHVV Лечение систем от вредоносных программ 12 08-06-2008 00:14
Блок питания ? или еще что то PLATON Непонятные проблемы с Железом 13 08-09-2007 22:14
AD не запоминает пароли или еще че-то Lui Microsoft Windows NT/2000/2003 1 18-05-2006 16:10




 
Переход