1 Востаннє редагувалося Zważaty (26.03.2014 11:56:32)

Тема: Робота з simple_html_dom. Як додати <br> до children(1)

Вітаю! Питання наступне, частина php скрипта, який використовує simple_html_dom:

echo $table->children(2)->children(1)->plaintext;
        echo "<br/>";

Тож, на виході маємо, наприклад:

Текст 1
<br/>
Текст 2
<br/>

Я хочу, щоб було так:

Текст 1
<br/>
Текст 2
<br/>
<br/>

Якщо додати ще одне эко, тобто так

echo $table->children(2)->children(1)->plaintext;
        echo "<br/>";
        echo "<br/>";

То будемо мати наступне

Текст 1
<br/>
<br/>
Текст 2
<br/>
<br/>

Що не є вірно.

Тож мені потрібно щось накшталт

echo $table->children(2)->children(1)."<br/>";.->plaintext;
        echo "<br/>";

Але це звісно не працює, тож які є думки?

Дякую!

2

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Ви навели не весь код. Ще має бути якийсь цикл, який виводить рядок 2 рази. От після цього циклу і додавайте <br/>.

3

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Викладіть що у вас є на вхід і трохи більше коду. Бо дійсно важко розібратись як ви все виводите ;)

4

Re: Робота з simple_html_dom. Як додати <br> до children(1)

  echo $table->children(2)->children(0)->plaintext;
        echo "<br/>";

        if (!isset( $table->children(2)->children(1)->plaintext )) {
        }
        else

        echo $table->children(2)->children(1)->plaintext;
        echo "<br/>";

Ось увесь код. Якщо додати <br/>  до першого рядка, то буде не так як потрібно. Тобто там де є children(2)->children(0) буте по декілька <br/>.

Ви ж розумієте, що children(2) зустрічається в коді 2 раза, тобто буде 2 <br/>, а children(0) та  children(1) лише по одному разу, тобто вони мають по одному <br/>. Тож мені лише потрібно щоб кожен мав по 2 <br/>. Бо в ішому випадку, якщо ще кудить додати еко, кількість br збільшиться на 1, тож children(2) матимє 3 штуки, а інші 2. А треба щоб вони мали однакову кількість!

Дякую.

5

Re: Робота з simple_html_dom. Як додати <br> до children(1)

А весь код можете скинути?

echo $table->children(2)->children(1)->plaintext;

цей рядок повертає вам елементи типу Текст 1 і Текст 2 ?

6 Востаннє редагувалося Zważaty (26.03.2014 12:21:52)

Re: Робота з simple_html_dom. Як додати <br> до children(1)

funivan написав:

А весь код можете скинути?

echo $table->children(2)->children(1)->plaintext;

цей рядок повертає вам елементи типу Текст 1 і Текст 2 ?

Саме так.

Текст 1<br/>
Текст 2<br/>

Текст 1 = children(2)
Текст 2 = children(1)

require_once 'simple_html_dom.php';
$url = "website.com";

$data = file_get_html($url);

$search = $data->find("div.box_rezult");

if($data->innertext!="" and $search ){
    foreach($search as $box_rezult){
    
        echo $box_rezult->find("td.l_name", 0)->plaintext;
        echo "<br/>";
    

        echo $box_rezult->find("td.l_text", 0)->plaintext;
        echo "<br/>";

        $table = $box_rezult->find("table.last--table", 0);

        echo $table->children(2)->children(0)->plaintext;
        echo "<br/>";

        if (!isset( $table->children(2)->children(1)->plaintext )) {
        }
        else

        echo $table->children(2)->children(1)->plaintext;
        echo "<br/>";
    
    }
}

На виході маємо:

Заголовок</br>
Дата</br>
Текст 1</br>
</br>
</br>

Заголовок</br>
Дата</br>
Текст 1</br>
</br>
</br>

Але, якщо є children(2)->children(1)

То маємо

Заголовок</br>
Дата</br>
Текст 1</br>
</br>
Заголовок</br>
Дата</br>
Текст 1</br>
</br>

7

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Zważaty написав:
   foreach($search as $box_rezult){

Ось ваш цикл. Знайдіть, де закривається фігурна дужка, і після неї додайте свій <br/>.

8

Re: Робота з simple_html_dom. Як додати <br> до children(1)

if($data->innertext!="" and $search ){
          foreach($search as $box_rezult){
            echo $box_rezult->find("td.l_name", 0)->plaintext;
            echo "<br/>";

            echo $box_rezult->find("td.l_text", 0)->plaintext;
            echo "<br/>";

            $table = $box_rezult->find("table.last--table", 0);

            echo $table->children(2)->children(0)->plaintext;
            echo "<br/>";

      
          }
          echo "<br/>";
        }

скоріш за все так)

9

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Дякую, алє це лише додає до останнього результату ще один <br>.
Річь у тім, що цей код шукає в html потрібні рядки, тож останній рядок може бути як children(2)->children(0) так і children(2)->children(1).

10

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Суть в тому що вам необхідно визначити останній рядок. Якщо визначите тоді зможете вивести дані.
У вас є ідеї як визначити останній рядок який вам потрібен

11

Re: Робота з simple_html_dom. Як додати <br> до children(1)

На мою думку все трохи інакше, в коді є такі рядки:

 echo $table->children(2)->children(0)->plaintext;
        echo "<br/>";

та

echo $table->children(2)->children(1)->plaintext;
        echo "<br/>";

Ось дивіться, children(2) зустрічається 2 рази, echo "<br/>" зустрічається теж 2 рази. Тобто children(2) має 2 "<br/>".

В той же час children(1) зустрічається лише 1 раз тож він має лише 1 <br/>.

Тож треба лише, щоб вони мали однакову кількість <br/>.

12 Востаннє редагувалося Zważaty (26.03.2014 15:11:20)

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Дякую усім, розібрався :)

Требо було додати '<br/>', ось так:

echo $table->children(2)->children(1)->plaintext, '<br/>';
        echo "<br/>";

Едине питання до всіх, може хтось знає як зробити наступне: мій код оброблює html сторінку так видає результат, по типу

Заголовок
Дата
Текст 1
Текст 2

Заголовок
Дата
Текст 1
Текст 2

И т.д. наприклад 10 разів. Тож як можно зробити так, щоб сьомий результат видавав лише Текст 1?
Тобто, щоб результат під номером 7 виконував лише цю чистину коду: echo $table->children(2)->children(0)->plaintext;

Треба якийсь лічильник чи шось таке.

13

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Zważaty написав:

Треба якийсь лічильник

В точку!

14 Востаннє редагувалося Zważaty (26.03.2014 15:38:33)

Re: Робота з simple_html_dom. Як додати <br> до children(1)

Ну то я знаю :)
А ось як це зробити вже не дуже :)

15

Re: Робота з simple_html_dom. Як додати <br> до children(1)

$index = 0;
$index++;

16

Re: Робота з simple_html_dom. Як додати <br> до children(1)

От я не розумію, нащо вивчати DOM людині, що не вміє з циклами працювати? Будинок ви теж зі стелі будуєте?

17

Re: Робота з simple_html_dom. Як додати <br> до children(1)

От я не розумію, нащо вивчати DOM людині, що не вміє з циклами працювати? Будинок ви теж зі стелі будуєте?

=) скоріше всього))
Побачимо що з цього вийде ;)

18

Re: Робота з simple_html_dom. Як додати <br> до children(1)

koala написав:

От я не розумію, нащо вивчати DOM людині, що не вміє з циклами працювати? Будинок ви теж зі стелі будуєте?

Вже можна створювати спілку на чолі зі Стадніком.