[PHP] Новичкам: задаем вопросы

Discussion in 'PHP' started by Kaimi, 7 May 2015.

  1. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    PHP:
    <?
        
    $data = array('o1'=>'мельница','o2'=>'лампочка','o3'=>,'тень');
        
    $sum 0;
        foreach(
    $data as $k=>$v) if(isset($_POST[$k]) && $_POST[$k]===$v) ++$sum;
    ?>
     
  2. GaLs

    GaLs New Member

    Joined:
    11 Jun 2015
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    есть такой скрипт:
    PHP:
    <?PHP
    file_put_contents
    ('output'join(PHP_EOLarray_map(function ($sInput) {
        list(
    $ip$mask) = explode('/'trim($sInput));
        return 
    substr(str_pad(decbin(ip2long($ip)), 320STR_PAD_LEFT), 0$mask);
        }, 
    file('input'FILE_SKIP_EMPTY_LINES))));
    ?>
    Он по идеи должен открывать файл где записано 800 ip адресов, читать построчно каждый адрес и преобразовывать его в двоичный код и записывать результат в другой файл. Этот скрип может это сделать или что то не то написано.?

    И не могу понять где открываемый файл и куда после преобразование все заисыватеся
     
  3. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    походу, этот скрипт переводит в двоичный код и записывает адреса сетей из файла input в файл output
     
    #23 roxblnfk, 10 Jul 2015
    Last edited: 10 Jul 2015
  4. GaLs

    GaLs New Member

    Joined:
    11 Jun 2015
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Да именно так я уже разобрался)
     
  5. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Доброго времени суток, подскажите пожалуйста, правильно ли я закомментировал вывод тройного массива? Если объяснение неправильно, объясните пожалуйста как правильно. Заранее спасибо.

    PHP:
    <?php
    //Тройной массив
            
    $categories = array( array( array('CAR_TIR''Покрышки'100),
                                        array(
    'CAR_OIL''Масло'10),
                                        array(
    'CAR_SPK''Свечи зажигания'4)
                                        ),
                                array( array(
    'VAN_TIR''Покрышки'100),
                                        array(
    'VAN_OIL''Масло'10),
                                        array(
    'VAN_SPK''Свечи зажигания'4)
                                        ),
                                array( array(
    'TRK_TIR''Покрышки'100),
                                        array(
    'TRK_OIL''Масло'10),
                                        array(
    'TRK_SPK''Свечи зажигания'4)
                                        ),

                );

            for (
    $layer 0$layer 3$layer++) { //Цикл по слоям
                
    echo "Слой $layer <br>";
                for (
    $row 0$row 3$row++) { //Цикл по массивам в слое
                    
    foreach ($categories[$layer][$row] as $key => $value) { //Цикл по слою
                        
    echo "$value ";
                    }
                    echo 
    "<br>";
                }
            }
    ?>
     
  6. koro

    koro Banned

    Joined:
    16 Jul 2015
    Messages:
    31
    Likes Received:
    14
    Reputations:
    0
    Code:
    foreach($categories as $layer => $row){
      echo "Слой $layer <br>";
      for($i=0;$i<count($row);$i++){
        for($j=0;$j<count($row[$i]);$j++){
          echo $row[i][$j];
        }
      echo "<br>";
      }
    
    }
    
    вроде так
     
    #26 koro, 21 Jul 2015
    Last edited: 21 Jul 2015
  7. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    как сделать глобальными переменными php ? переменные нужно взять из конца скрипта и в начале скрипта выполнить функцию, пробовал $GLOBALS[] и global - но значения не переносятся
    и вообще, реально ли без сессий перенести данные из переменных из конца скрипта - с самого низа в верхнюю часть ?


    Всем привет
    я некоторые большие формы и объекты на сайте скрываю и показываю спойлером, но хотелось сделать возможность запоминать клики на показать - спрятать для пользователя

    запомнить состояние checkbox планирую через cookie
    вот этой строкой формируется открытие и закрытие окна при клике
    HTML:
    <input style="width:360px;height:45px;" type="checkbox" name="spoiler_checked" tabindex="-1">
    помогите пожалуйста реализовать простое и эффективное запоминание результата при каждом клике, которое нужно записать в cookie с именем spoiler_checked сроком на 1 месяц существования


    примечание, ещё проблема в том что таких спойлеров несколько - на данный момент 5 крупных и 2 маленьких блока спрятано
    и каждый спойлер должен быть автономным, его id не пересекается с id других спойлеров, что бы кликнув на один - не стереть результаты других сохранённых спойлеров
     
    #27 dondy, 28 Jul 2015
    Last edited: 17 Sep 2015
  8. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    как в php открыть файл без расширения ? есть файлы с сессиями, выбрал нужный файл ждя прочтения, но без расширения не открывает fopen
     
  9. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    скорее всего просто нет прав на это действие.
     
  10. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    покажи пример твоего неработающего кода с пояснениями, чтобы можно было пальцем ткнуть в ошибку
     
  11. hopekillah

    hopekillah New Member

    Joined:
    13 Aug 2015
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    возможно ли сделать форму авторизации через вк с отправкой на гейт или мыло, чтобы пользователь входил в свой аккаунт, а не получал ошибку?т.е. создание видимости реальной авторизации, но с отправкой данных мне.
     
  12. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    64
    Likes Received:
    29
    Reputations:
    32
  13. hopekillah

    hopekillah New Member

    Joined:
    13 Aug 2015
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
  14. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    я вот скрипт один когда то в сети нашел, немного его доделал, но здесь нет возможности показа новых файлов, которые появились после обновления снимка хэш сумм.

    скрипт удобный, но я не знаю как прикрутить сюда фитчу - что бы показывал новые файлы на хостинге.

    Помогите пожалуйста кто в php силен, что можно дописать сюда?

    PHP:
    <?php
    error_reporting 
    (0);
    header('Content-Type: text/html; charset=UTF-8');
    header("X-Frame-Options: DENY");
    header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
    date_default_timezone_set('Europe/Moscow');

    $md5_file          "/folder/logs.txt";                        // укажите имя кеш файла

    $allowExt          ".php|.html|.tpl|.htm|.htaccess|.js|.css|.ini|.txt|.sql|.png|.gif|.ico|.jpg";     // типы файлов которые обрабатывать( вписывать с точкой вначале и разделять знаком | )
    $allowDir          "";                                   // папки которые обрабатывать (разделять знаком | ), оставить пустым, если все

    $skipDir           "cache|temp";                         // папки которые НЕобрабатывать (разделять знаком | ), оставить пустым, если не нужно ничего пропускать
    $skipFileGlobal    "logs.txt|filename.php";        // имена файлов которые пропускать. Будут пропускаться все файлы с таким именем в любой папке
    $skipFile          "";
                                                               
    // пропускать конкретные файлы. указать полный путь. разделять "|"
                                                               // чтобы определить полный путь: делаем первое обновление хеша
                                                               // открываем файл с хешом, находим нужный файл во второй колонке и копируем полный путь
    $adminMail         "[email protected]";                  // почта на которую уйдет отчет об измененных файлах
    $mail_subject      "почтовый лог";        // тема для письма с отчетом
    $adminPassword     "43gfdgrtyhfugdf673wf";   // пароль. для сброса хеша файлов в md5

    $scriptDir         "";                           // папка в которой расположен скрипт относительно корня сайта. без слешей на концах пр. "folder", "folder1/folder2"
                                                               // оставить пустым, если скрипт в корне

    $xmail = array();
    $xmail['subject']  = $mail_subject;
    $xmail['headers']  = 'MIME-Version: 1.0' "\r\n".
                        
    'Content-type: text/html; charset=UTF-8' "\r\n".
                        
    'From: '.$adminMail"\r\n" .
                        
    'Reply-To: '.$adminMail"\r\n" .
                        
    'X-Mailer: PHP/' phpversion();
    $xmail['adminMail'] = $adminMail;

    $allowExt           str_replace(".","\.",$allowExt);
    $skipFile           explode("|",$skipFile);
    $skipFileGlobal     explode("|",$skipFileGlobal);


    if (
    trim($scriptDir) != ""){
    $ex                 "-".(strlen($scriptDir) + 1);
    $BASE               substr(dirname(__FILE__),0,$ex);
    $md5_file           $BASE."/".$scriptDir."/".$md5_file;
    } else {
    $BASE               dirname(__FILE__);
    $md5_file           $BASE."/".$md5_file;
    }
    if (!
    is_dir($BASE."/".$scriptDir)) die("Папка \"$scriptDir\" отсутсвует - создайте её, или измените параметр \"$ sсriptDir\" в настройках");

    define("ABSPATH",$BASE);


    function 
    write_md5(){
        global 
    $md5_file;
        
    $md5 dir_md5();
        
    $md5_from_file = @fopen($md5_file'w');
        foreach (
    $md5 as $key=>$val) @fwrite($md5_from_file"$val\t$key\n");
    }

    function 
    checker(){
        global 
    $md5_file,$xmail,$adminPassword;
        
    $i 1;

        if (!
    file_exists($md5_file)) {
            
    write_md5();
        }

        if ( 
    $_POST['updatemd5'] ) {
            if (  
    md5(trim($_POST['password'])) == $adminPassword  ) {
                
    write_md5();
    //выполняем скрипт замены даты и времени
    $select_file_touch $md5_file;
    if (!
    touch($select_file_touchstrtotime('2014-09-15 18:21:37'))) {
        echo 
    '<font color="#FF0000">Упс, что-то пошло не так... дата файла не исправлена</font>';
    } else {
    //    echo '<p><b><font color="#008000">Модификация времени и даты файла прошла успешно!</font></b><br><b><font color="#696969">Папка / Файл: </font></b><font color="#008000"><b>'.$select_file_touch.'</b></font></p>';
    }
    //конец выполнения скрипта
            
    } else {
                echo 
    '<h3>Неверный пароль</h3>';
            }
        }

        
    $md5 dir_md5();
        if (
    file_exists($md5_file)) {
            
    $md5_from_file file($md5_file);

            if ( !
    $md5_from_file ) {
                
    write_md5();
                
    $md5_from_file file($md5_file);
            }

       
            
    $mailBody "";
            
    $error "";
            while (list(
    $ln$line) = each($md5_from_file))
            {
                list(
    $md$ff) = explode("\t"trim($line));
                    if (
    $md != $md5[$ff]) {
                        
    $ff str_replace(ABSPATH'/'$ff);
                        
    $ff str_replace('//''/'$ff);
                        
    $error .= "<br />$i$ff - <font color='red'>изменен</font>";
    if (
    file_exists($_SERVER['DOCUMENT_ROOT'].$ff)) {
    } else {
    echo 
    '<font color="#FF0000">Файл <b><u>'.$ff.'</u></b> отсутствует!<br></font>';
    }
                        
    $mailBody .= "<br />$i$ff - изменен" "\r\n";
                        
    $i++;
               


                    }
            }


            
    //if($mailBody != "" && $_GET['send'] == 1) @mail($xmail['adminMail'], $xmail['subject'], $mailBody, $xmail['headers']);//отправить на почту
        
    }


        if (
    $_GET['send'] != 1) {
            if ( 
    $i == ) {
                echo 
    "<br /><h3><font color='green'>Всё ок!</font></h3>";
            } else {
                echo 
    $error;
            }
       
            echo 
    '<br />
                <br />
                <form method="post" action="">
                пароль: <input type="text" id="" name="password" value="">
                <input type="submit" id="updatemd5" name="updatemd5" value="Сбросить/обновить хэш файлов"><br>
    <input type="button" title="Обновить страницу" value="Обновите страницу" onClick="window.location.href=window.location.href" style="cursor:pointer; cursor:hand;">
                </form>'
    ;
        }
    }

    function 
    dir_md5() {
        global 
    $md5,$allowDir;
        if(
    $allowDir != ""){
            
    find_md5(ABSPATH0);
            
    $aDir explode("|",$allowDir);
            while (list(
    $key$dir) = each($aDir)){
                
    find_md5(ABSPATH .'/'$dir1);
            }
        }else{
            
    find_md5(ABSPATH1);
        }
        return 
    $md5;
    }

    function 
    find_md5($path$recurs) {
        global 
    $md5,$allowExt,$skipDir,$skipFile,$skipFileGlobal;

        if (
    $skipDir != "" and  preg_match("#$skipDir$#i"$path)) $skip 1;

        if (
    $dir = @opendir($path)  and $skip != ) {

            while(
    $file readdir($dir)) {
                if (
    $file == '.' or $file == '..' ) continue;

                if (!
    in_array($file,$skipFileGlobal)) {
           
                    
    $file $path '/' $file;
                    if (
    is_dir($file) && $recurs)  {
                        
    find_md5($file1);
                    }
           

                    if (!
    in_array($file,$skipFile)) {
                        if (
    is_file($file) && preg_match("/$allowExt/i"$file)) {
                            
    $md5[$file] = md5(join (''file($file)));
                        }
                    }
                }
            }
            
    closedir($dir);
         }
    }

    checker();
    ?>
     
  15. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    Лови. Не тестировал, ибо лень. Также исправил небольшой баг с file_exist
    PHP:
    <?php
    error_reporting 
    (0);
    header('Content-Type: text/html; charset=UTF-8');
    header("X-Frame-Options: DENY");
    header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
    date_default_timezone_set('Europe/Moscow');

    $md5_file          "/folder/logs.txt";                        // укажите имя кеш файла

    $allowExt          ".php|.html|.tpl|.htm|.htaccess|.js|.css|.ini|.txt|.sql|.png|.gif|.ico|.jpg";     // типы файлов которые обрабатывать( вписывать с точкой вначале и разделять знаком | )
    $allowDir          "";                                   // папки которые обрабатывать (разделять знаком | ), оставить пустым, если все

    $skipDir           "cache|temp";                         // папки которые НЕобрабатывать (разделять знаком | ), оставить пустым, если не нужно ничего пропускать
    $skipFileGlobal    "logs.txt|filename.php";        // имена файлов которые пропускать. Будут пропускаться все файлы с таким именем в любой папке
    $skipFile          "";
                                                               
    // пропускать конкретные файлы. указать полный путь. разделять "|"
                                                               // чтобы определить полный путь: делаем первое обновление хеша
                                                               // открываем файл с хешом, находим нужный файл во второй колонке и копируем полный путь
    $adminMail         "[email protected]";                  // почта на которую уйдет отчет об измененных файлах
    $mail_subject      "почтовый лог";        // тема для письма с отчетом
    $adminPassword     "43gfdgrtyhfugdf673wf";   // пароль. для сброса хеша файлов в md5

    $scriptDir         "";                           // папка в которой расположен скрипт относительно корня сайта. без слешей на концах пр. "folder", "folder1/folder2"
                                                               // оставить пустым, если скрипт в корне

    $xmail = array();
    $xmail['subject']  = $mail_subject;
    $xmail['headers']  = 'MIME-Version: 1.0' "\r\n".
                        
    'Content-type: text/html; charset=UTF-8' "\r\n".
                        
    'From: '.$adminMail"\r\n" .
                        
    'Reply-To: '.$adminMail"\r\n" .
                        
    'X-Mailer: PHP/' phpversion();
    $xmail['adminMail'] = $adminMail;

    $allowExt           str_replace(".","\.",$allowExt);
    $skipFile           explode("|",$skipFile);
    $skipFileGlobal     explode("|",$skipFileGlobal);


    if (
    trim($scriptDir) != ""){
    $ex                 "-".(strlen($scriptDir) + 1);
    $BASE               substr(dirname(__FILE__),0,$ex);
    $md5_file           $BASE."/".$scriptDir."/".$md5_file;
    } else {
    $BASE               dirname(__FILE__);
    $md5_file           $BASE."/".$md5_file;
    }
    if (!
    is_dir($BASE."/".$scriptDir)) die("Папка \"$scriptDir\" отсутсвует - создайте её, или измените параметр \"$ sсriptDir\" в настройках");

    define("ABSPATH",$BASE);


    function 
    write_md5(){
        global 
    $md5_file;
        
    $md5 dir_md5();
        
    $md5_from_file = @fopen($md5_file'w');
        foreach (
    $md5 as $key=>$val) @fwrite($md5_from_file"$val\t$key\n");
    }

    function 
    checker(){
        global 
    $md5_file,$xmail,$adminPassword;
        
    $i 1;

        if (!
    file_exists($md5_file)) {
            
    write_md5();
        }

        if ( 
    $_POST['updatemd5'] ) {
            if (  
    md5(trim($_POST['password'])) == $adminPassword  ) {
                
    write_md5();
    //выполняем скрипт замены даты и времени
    $select_file_touch $md5_file;
    if (!
    touch($select_file_touchstrtotime('2014-09-15 18:21:37'))) {
        echo 
    '<font color="#FF0000">Упс, что-то пошло не так... дата файла не исправлена</font>';
    } else {
    //    echo '<p><b><font color="#008000">Модификация времени и даты файла прошла успешно!</font></b><br><b><font color="#696969">Папка / Файл: </font></b><font color="#008000"><b>'.$select_file_touch.'</b></font></p>';
    }
    //конец выполнения скрипта
            
    } else {
                echo 
    '<h3>Неверный пароль</h3>';
            }
        }

        
    $md5 dir_md5();
        if (
    file_exists($md5_file)) {
            
    $md5_from_file file($md5_file);

            if ( !
    $md5_from_file ) {
                
    write_md5();
                
    $md5_from_file file($md5_file);
            }

            
    $mailBody "";
            
    $error "";
            
    $fuck_md5 $md5;
            while (list(
    $ln$line) = each($md5_from_file))
            {
                list(
    $md$ff) = explode("\t"trim($line));
                    if (
    $md != $fuck_md5[$ff]) {
                        
    $ff str_replace(ABSPATH'/'$ff);
                        
    $ff str_replace('//''/'$ff);
                        
    $error .= "<br />$i$ff - <font color='red'>изменен</font>";
                        if (!
    is_file($_SERVER['DOCUMENT_ROOT'].$ff)){
                            echo 
    '<font color="#FF0000">Файл <b><u>'.$ff.'</u></b> отсутствует!<br></font>';
                        }
                        
    $mailBody .= "<br />$i$ff - изменен" "\r\n";
                        
    $i++;
                    }
                    if(isset(
    $fuck_md5[$ff])) unset($fuck_md5[$ff]);
            }
            if(
    count($fuck_md5)>0){
                
    $mailBody.="Новые файлы:";
                foreach(
    $fuck_md5 as $k=>$v){
                    
    $mailBody.="\r\n{$k} :: {$v}";
                }
            }

            
    //if($mailBody != "" && $_GET['send'] == 1) @mail($xmail['adminMail'], $xmail['subject'], $mailBody, $xmail['headers']);//отправить на почту
        
    }


        if (
    $_GET['send'] != 1) {
            if ( 
    $i == ) {
                echo 
    "<br /><h3><font color='green'>Всё ок!</font></h3>";
            } else {
                echo 
    $error;
            }
            echo 
    '<br />
                <br />
                <form method="post" action="">
                пароль: <input type="text" id="" name="password" value="">
                <input type="submit" id="updatemd5" name="updatemd5" value="Сбросить/обновить хэш файлов"><br>
    <input type="button" title="Обновить страницу" value="Обновите страницу" onClick="window.location.href=window.location.href" style="cursor:pointer; cursor:hand;">
                </form>'
    ;
        }
    }

    function 
    dir_md5() {
        global 
    $md5,$allowDir;
        if(
    $allowDir != ""){
            
    find_md5(ABSPATH0);
            
    $aDir explode("|",$allowDir);
            while (list(
    $key$dir) = each($aDir)){
                
    find_md5(ABSPATH .'/'$dir1);
            }
        }else{
            
    find_md5(ABSPATH1);
        }
        return 
    $md5;
    }

    function 
    find_md5($path$recurs) {
        global 
    $md5,$allowExt,$skipDir,$skipFile,$skipFileGlobal;

        if (
    $skipDir != "" and  preg_match("#$skipDir$#i"$path)) $skip 1;

        if (
    $dir = @opendir($path)  and $skip != ) {

            while(
    $file readdir($dir)) {
                if (
    $file == '.' or $file == '..' ) continue;

                if (!
    in_array($file,$skipFileGlobal)) {
         
                    
    $file $path '/' $file;
                    if (
    is_dir($file) && $recurs)  {
                        
    find_md5($file1);
                    }
         

                    if (!
    in_array($file,$skipFile)) {
                        if (
    is_file($file) && preg_match("/$allowExt/i"$file)) {
                            
    $md5[$file] = md5(join (''file($file)));
                        }
                    }
                }
            }
            
    closedir($dir);
         }
    }

    checker();
    ?>
     
    vlladisllav and dondy like this.
  16. Грабитель

    Joined:
    5 Mar 2013
    Messages:
    196
    Likes Received:
    12
    Reputations:
    -7
    Подскажите, как средствами php (или регулярок + php) можно выдернуть все содержимое в рамках тегов:
    Code:
    <div class="news"> 
    
    ... 
    
    </div>
    
    Но не всё так просто, вместо точек ... могут быть вложенные теги <div> сколь угодно, а мне нужно выловить всё что начинается с тега <div class="news"> и заканчивается закрывающимся тегом, который закрывает как раз <div class="news"> (а не первый попавшийся)
    Буду признателен за решение. Особенно если это можно замутить на одних регулярках, и обойтись без громоздких классов по распарсиванию HTML кода.
    Благодарю.
     
  17. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Зачем изобретать велосипед? Все "громоздкие классы" уже включены в PHP (5).

    PHP:
    $dom = new domDocument;
    $dom->loadHTML('<div class="news"> ... some text ... </div>');

    $xpath = new DOMXPath($dom);
    $results $xpath->query("//div[@class='news']");

    print_r($results[0]);
    Вот и всё. В $results массив DOMElement-объектов.
     
    Грабитель likes this.
  18. Грабитель

    Joined:
    5 Mar 2013
    Messages:
    196
    Likes Received:
    12
    Reputations:
    -7
    Благодарю, но это работает немножечко не так как нужно, вот код:
    PHP:
    $dom = new domDocument;
    $dom->loadHTML('<div class="news"> ... some <div>test</div> text ... </div>');

    $xpath = new DOMXPath($dom);
    $results $xpath->query("//div[@class='news']");

    foreach (
    $results as $entry) {
    echo 
    "{$entry->nodeValue}";
    }
    Если в рамках нужного тега лежит ещё один тег <div> то он "проглатывается", и в итоге код выводит:
    ... some test text ...
    А нужно чтобы выводился полный текст с тегами в рамках <div class="news"> и заканчивая тегом </div> который ему принадлежит, вот этот текст как он есть внутри этого тега нужно полностью получить.
    Другими словами на выходе надо получить: ... some <div>test</div> text ...
    Буду благодарен, если подскажете как этого добиться.

    И ещё, можно ли обратиться как то напрямую к объекту $results нежли гонять его в цикле foreach ? Содержимое не выводится ни через print_r ни через var_dump, и как бы я не старался к нему обращаться наподобие print_r($results[0]->nodeValue); почему то ничего не выводит.
    Ещё раз благодарю.
     
  19. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Грабитель, у domDocument есть метод saveHTML, который и нужно натравить на полученный DOMElement.

    PHP:
    echo $dom->saveHTML($results[0]);
    Правда, он покажет outerHTML элемента (т. е. с самим родительским тегом <div class="news" />, но его обрезать уже недолго).
    Соответственно, в этом примере как раз и обращаемся к первому элементу без цикла.
     
    Грабитель likes this.
  20. Грабитель

    Joined:
    5 Mar 2013
    Messages:
    196
    Likes Received:
    12
    Reputations:
    -7
    Странно, у меня код заработал только так:
    PHP:
    $dom = new domDocument;
    $dom->loadHTML('<div class="news"> ... some text ... </div>');

    $xpath = new DOMXPath($dom);
    $results $xpath->query("//div[@class='news']");

    echo 
    $dom->saveHTML();
    А этот вывод: echo $dom->saveHTML($results[0]); не работает (да и не может, так как функция saveHTML не требует аргументов).
    Но тем не менее проблема пропажи внутренних тегов остаётся, её можно как то решить? Чтобы выдергивался весь текст как есть вместе с ... some <div>test</div> text ... ?