Выцепить текст только из одного <div>

Статус
В этой теме нельзя размещать новые ответы.

sarkis

Профессор
Регистрация
27 Фев 2014
Сообщения
248
Реакции
40
есть код html в переменной $main_str


Код:
<div style="display: table-cell; vertical-align: top">
<div>Текст1</div>

<div class='word'>Текст2</div>
<div>Текст3</div>

</div>
Нужно регуляркой вывести "текст1" ..
как я делаю :
Код:
preg_match_all("|<div>([\r\w\W\s]+.*)<\/div>|U",$main_str, $opis, PREG_PATTERN_ORDER);

но ,учитывая , что в контенте страницы много текста в тегах <div></div> , то получаю не совсем то,что нужно ...
Как грамотно составить регулярное выражение ,чтобы получить значение "Текст1" сразу ...
делал вот еще так , но не помогло :
Код:
preg_match_all("|<div style=\"([\r\w\W\s]+.*)\"><div>([\r\w\W\s]+.*)<\/div>|U",
$main_str,
$opis, PREG_PATTERN_ORDER);
 
PHP:
preg_match_all("|<div[^>]*>\s*<div>([^<]*)<\/div>|U",
$main_str,
$opis, PREG_PATTERN_ORDER);
Может зацепится за <div class='word'> тогда
PHP:
preg_match_all("|<div[^>]*>\s*<div>([^<]*)<\/div>\s*<div class='word'>|U",
$main_str,
$opis, PREG_PATTERN_ORDER);

[^>]* означает ноль или более любых символов кроме >
аналогично с [^<]* только там любые кроме <
 
Последнее редактирование:
PHP:
preg_match_all("|<div[^>]*>\s*<div>([^<]*)<\/div>|U",
$main_str,
$opis, PREG_PATTERN_ORDER);
{/PHP]
Спасибо вам ...Коротко подскажите значение [^<]* и [^>]*

если не затруднит , подскажите для вот такого кода регулярку , а то я пока сообразить не могу
Код:
<a href="/board/sale/17071/">
          <img src="/upload/shop_2/1/7/0/item_17071/small_shop_items_catalog_image17071.jpg" alt="тест" title="тест" />
        </a>

делаю вот так :
Код:
preg_match_all("|<a[\s*]href=\"(.*)><img src=\"[^>]*\/><\/a>|U",
$main_str,
$img, PREG_PATTERN_ORDER);
но показывает абсолютно другую картинку ...
Заранее спасибо
 
Последнее редактирование модератором:
На первый взгляд там перевод строки и пробелы перед <img а в регулярке слитно ><img добавить туда \s* это захватит любые пробельные символы и переносы строк.
PHP:
preg_match_all("|<a[\s*]href=\"(.*)>\s*<img src=\"[^>]*\/>\s*<\/a>|U",
$main_str,
$img, PREG_PATTERN_ORDER);
 
На первый взгляд там перевод строки и пробелы перед <img а в регулярке слитно ><img добавить туда \s* это захватит любые пробельные символы и переносы строк.
PHP:
preg_match_all("|<a[\s*]href=\"(.*)>\s*<img src=\"[^>]*\/>\s*<\/a>|U",
$main_str,
$img, PREG_PATTERN_ORDER);

Смотрите ,вот второй код ,который выводит
Код:
<a href="/index.php">
          <img src="/image/logo.png" alt="тест" title="тест" />
        </a>

Мне нужно именно первый вариант ..Как я понимаю , тут нужно привязать регулярку к атрибутам ссылки как-то ..
 
Да, href /board/sale/ или src ...
PHP:
preg_match_all("|<a[\s*]href=\"(/board/sale/.*)>\s*<img src=\"[^>]*\/>\s*<\/a>|U",$main_str,$img, PREG_PATTERN_ORDER);

PHP:
preg_match_all("|<a[\s*]href=\"(.*)>\s*<img src=\"/upload/shop_2/[^>]*\/>\s*<\/a>|U",$main_str,$img, PREG_PATTERN_ORDER);

Или цепляться за разметку выше или ниже искомого участка
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху