powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Ругулярки, preg_match_all
15 сообщений из 15, страница 1 из 1
[PHP] Ругулярки, preg_match_all
    #38616907
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть к примеру структура из дивов и таблиц, вложенных в друг друга, какой самый простой способ, добраться до нужной информации в них?
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<div class="mane-div" id="22377">
<table>
   <td>
         <a href="22377">
               <img class="image" src="photo/22377.jpg">
         </a>
   </td>

    <td>
         <a href="22377" class="link"> NAME: 0123456789 </a>
         <div class="cont"> CONTENT: Text text tetx texе text text text text ... </div>
   </td>
  </table>
</div>




На выходе должно получиться следущее:

IMG: 22377
NAME: 0123456789
CONTENT: Text text tetx texе text text text text


Щас мне приходиться в несколько этапов это делать, но мне кажется можно в один заход получать нужные данные из данной структуры.
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38617067
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpath
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38617872
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowxpath

Да, вроде подходит!



Только вот не очень пока умею составлять "маски" для выборки элементов из DOM и тд.


Делаю значит выборку , все работает нормально, но как мне получить атрибуты выбираемых элементов?

Ну к примеру я по маске выбираю все дивы с id начинающимся на myDiv

$tableRows = $xpath->query("//div[starts-with(@id,'myDiv')]");


но у них ещё идёт продолжение id="myDiv- 234568 "

Как мне узнавать id атрибуты целиком, то есть 234568 ?




Мало примеров в интернете по этой теме...
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38617906
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторReturns an array of SimpleXMLElement objects or FALSE in case of an error.
foreach( $tableRows as $obj ) {
echo $obj->getAttribute('id');
}
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618003
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GororScareCrowxpath

Да, вроде подходит!



Только вот не очень пока умею составлять "маски" для выборки элементов из DOM и тд.



Мало примеров в интернете по этой теме...



мало, братцы, мало..



гуглёж фразы xpath examples выдаёт About 1,910,000 results
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618071
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторReturns an array of SimpleXMLElement objects or FALSE in case of an error.
foreach( $tableRows as $obj ) {
echo $obj->getAttribute('id');
}

Спасибо! Работает!
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618163
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как можно сразу в одном цикле и к вложенным элементам обращаться?

Ну к примеру, я обращаюсь к id="item-345679", мне выдаёт содержимое данного дива, то есть: Content text, а как мне ещё вложенные в искомый узел, элементы DOM задействовать: <img>, <a>? По второму кругу что-ли цикл запускать? Или с ними отдельно работать?


Код: html
1.
2.
3.
4.
5.
6.
<div id="item-345679">       
          Content text

         <img scr="x.jpg">
         <a href="#">Link</a>
</div>
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618166
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volodin661
мало, братцы, мало..

гуглёж фразы xpath examples выдаёт About 1,910,000 results

Если честно, то я почти никогда дальше 2 страницы гугла не переходил, 1-2 обычно на них есть ответ, если его там нет, то значит нет) Дальше идёт "мусор" не по теме, очень мало точных вхождений и тд.
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618179
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gororvolodin661мало, братцы, мало..

гуглёж фразы xpath examples выдаёт About 1,910,000 results

Если честно, то я почти никогда дальше 2 страницы гугла не переходил, 1-2 обычно на них есть ответ, если его там нет, то значит нет) Дальше идёт "мусор" не по теме, очень мало точных вхождений и тд.

а я тоже дальше двух страниц не пойду,
я даже дальше второй ссылки на первой странице не пойду,
а зайду в неё ( XPath Syntax ) унутрь и увижу, что для того, чтобы выбрать ВСЕ атрибуты всех узлов с именем "id",
надо написать xpath выражение
Код: xml
1.
//@id

,

а чтобы только те, которые при тэге div:
Код: xml
1.
//div/[@id]   #выражение в квадратных скобках называют предикат


Predicates

а если только те из атрибутов id, у которых в начале сочетание item , то
Код: xml
1.
//div/[ starts-with(@id, "item") ]     #используется xpath-функция  starts-with() 


см. Functions Reference
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618184
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volodin661надо написать xpath выражение
Код: xml
1.
//@id


а чтобы только те, которые при тэге div:
Код: xml
1.
//div/[@id]   #выражение в квадратных скобках называют предикат


Predicates
а если только те из атрибутов id, у которых в начале сочетание item , то
Код: xml
1.
//div/[ starts-with(@id, "item") ]     #используется xpath-функция  starts-with() 


см. Functions Reference


Меня интересует, как добраться к примеру до: <img scr="x.jpg">, как получить "Content text" из дива c id="item-345679", я уже понял, но как работать с вложенными в него DOM элементами <img>, <a>? Не пропадать же им даром?) Я так понимаю они тоже присутствуют где-то в выборке, так как зажаты между тегами:

<div id="item-345679"><a href="#"> Мне нужно это! </a></div>

Как к ним сразу достучаться? Вот это я пока не понял.

Код: html
1.
2.
3.
4.
5.
<div id="item-345679">       
          Content text
         <img scr="x.jpg">
         <a href="#">Link</a>
</div>
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618210
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goror<div id="item-345679"><a href="#"> Мне нужно это! </a></div>

Как к ним сразу достучаться? Вот это я пока не понял.

Код: html
1.
2.
3.
4.
5.
<div id="item-345679">       
          Content text
         <img scr="x.jpg">
         <a href="#">Link</a>
</div>






дорогой друг, для кого я приводил все эти ссылки, тратил время, портил ясные глаза ? а?!!

( можешь не отвечать, вопрос риторический )

Код: xml
1.
//div/a[@href]



даст значение тэга anchor c аттрибутом href внутри тэга div и это то, что тебе нужно! было сделать самому

домашнее задание: разобрать что такое в xpath // - два слэша в начале, / - один слэш и без слэша.
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618211
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volodin661,
я таки испортил ясные глаза - в предыдущем моём посте-
вдруг откуда ни возьмись лишний слэш перед предикатом,
правильно:

Код: xml
1.
2.
3.
//div[@id]
и
//div[ starts-with(@id, "item") ]
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618729
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор<div id="item-345679"><a href="#">Мне нужно это!</a></div>

http://www.php.net/manual/ru/class.domnode.php

авторchildNodes

Возвращает список DOMNodeList, содержащий всех потомков текущего узла. Если у узла нет потомков, возвращает пустой список DOMNodeList.
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38618833
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volodin661,

Что-то не выходит у меня в одном "заходе" собрать всё..

Либо "Text text text ...." получаю через
Код: php
1.
//div[starts-with(@id,'item')]    // Тут только "Text text text ..."



или же добавляю
Код: php
1.
//div[starts-with(@id,'item')]//img[@class='photo']  // Тут список фоток получаю без  "Text text text ..."



А мне нужно в одном заходе и Text text text .... и атрибуты <img> получить, чтоб не делать два цикла один для Текста див второй для атрибутов img и в array_combine они не состыкуются и тд.

Код: html
1.
2.
3.
4.
<div id="item-345679">       
         Text text text ....
             <img class="photo" scr="x.jpg">
</div>
...
Рейтинг: 0 / 0
[PHP] Ругулярки, preg_match_all
    #38619010
Goror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, пока решил не углубляться в данный вопрос и сделал два цикла, потом их соединил через эррей_комбайн, вроде работает.)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Ругулярки, preg_match_all
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]