Я плохо разбираюсь в PHP, но с некоторой помощью я понял, как вывести определенные значения через scrape / XPath. Я пытаюсь настроить его так, чтобы если число, которое он выводит, было положительным числом, цвет был зеленым. Если отрицательный, цвет красный.

Взяв этот случайный веб-сайт в качестве примера, в настоящее время он дает число значения в качестве вывода

<?php

    $doc = new DOMDocument;
     // We don't want to bother with white spaces
    $doc->preserveWhiteSpace = false;

    $doc->strictErrorChecking = false;
    $doc->recover = true;

    $doc->loadHTMLFile('http://www.moneycontrol.com/markets/global-indices/');

    $xpath = new DOMXPath($doc);

    $query = "//div[@class='MT10']";


    $entries = $xpath->query($query);
    foreach ($entries as $entry) 
    {
        $result = trim($entry->textContent); 
        $ret_ = explode(' ', $result);
        //make sure every element in the array don't start or end with blank

        foreach ($ret_ as $key=>$val)
        {
            $ret_[$key]=trim($val);
        }

        //delete the empty element and the element is blank "\n" "\r" "\t"
        //I modify this line
        $ret_ = array_values(array_filter($ret_,deleteBlankInArray));

        //echo the last element
        echo $ret_[26];
    }
}

Я знаю кое-что из того, что могло бы быть решением, но у меня недостаточно навыков, чтобы заставить его работать вместе. Буду признателен за любую помощь с этим, если это вообще возможно. Это то, что нужно добавить, но моя уникальная ситуация состоит в том, что это очищенные данные, случайные числа.

CSS

.value-positive {
  color: #0cdb02;
}

.value-negative {
color: #fe0000;
}

Код PHP:

<?php
    $classname = $output < 0 ? 'negative' : 'positive';
    print "<span class='value-$classname'>$output</span>";
?>
2
Masteryogurt 22 Июн 2017 в 05:58
Вы можете объяснить, чего пытаетесь достичь?
 – 
Sahil Gulati
22 Июн 2017 в 06:54
Конечно, спасибо. Мой файл php выводит очищенные данные, всегда число. Цифры вроде -40,3%. 80.30 и т. Д. Прямо сейчас они по умолчанию отображаются черным цветом, или в зависимости от того, что указал мой css. Вместо этого я бы хотел, чтобы php автоматически окрашивал число в красный цвет, если это отрицательное число, например -30,3. Или зеленый, если это положительное число, например .03 или 20.04. Это будут СЛУЧАЙНЫЕ числа, поэтому мне нужно что-то, что автоматически раскрашивает его на основе значения случайно извлеченного / выведенного значения.
 – 
Masteryogurt
22 Июн 2017 в 06:56
Извините, не знаю, как сделать это более ясным на данный момент. мой веб-сайт собирает данные с других веб-сайтов через php. он выводит на мой сайт числовые значения вроде «30.04». Я хотел бы добавить функцию php, где независимо от числа, которое выводит мой php, оно АВТОМАТИЧЕСКИ окрашивается в красный цвет, если отрицательное число, или автоматически окрашивается в зеленый цвет, если оно положительное. Это самый простой способ объяснить это.
 – 
Masteryogurt
22 Июн 2017 в 07:01
Ах! Потрясающие! Спасибо, Сахил.
 – 
Masteryogurt
22 Июн 2017 в 07:02

1 ответ

Лучший ответ

Попробуйте этот самый простой. Надеюсь, это понятно, и это то, что вы ищете. Вам необходимо использовать intval,

Вы должны определить такую ​​функцию и вызывать ее, когда вам нужно.

Попробуйте этот фрагмент кода здесь

<html>
    <head>
        <style>
            .value-positive {
              color: #0cdb02;
            }

            .value-negative {
                color: #fe0000;
            }
        </style>
    </head>
    <body>
        <?php

        $output='-40.3%';

        addClass($output);

        function addClass($output)
        {
            $classname = intval($output) < 0 ? 'negative' : 'positive';
            print "<span class='value-$classname'>$output</span>";
        }

        ?>
    </body>

</html>
2
Sahil Gulati 22 Июн 2017 в 07:22
Привет, Сахил! Это здорово, спасибо. Однако у меня есть одна проблема: он выводит для меня ОБА отрицательное и положительное значение. Где я просто хочу, чтобы он выводил отрицательный, если число отрицательное. И положительный, если он положительный. Я в основном помещаю ваш код на свою страницу php, ниже php для очистки данных
 – 
Masteryogurt
22 Июн 2017 в 07:10
preserveWhiteSpace = false; // Большинство разработчиков HTML - шимпанзе и создают недопустимую разметку ... $ doc-> strictErrorChecking = false; $ док-> восстановить = правда; $ doc-> loadHTMLFile ('coinmarketcap.com/'); $ xpath = новый DOMXPath ($ doc); $ query = "// tr [@ id = 'id-ripple']";
 – 
Masteryogurt
22 Июн 2017 в 07:10
Спасибо, Сахил, это было не совсем то, что я искал. Потому что мне нужно ввести это число, а также указать, положительное оно или отрицательное. с xpath в моем php числа выводятся автоматически через datascrape, и мне нужно, чтобы он функционировал таким образом, чтобы мне никогда не приходилось вводить числа вручную. Другими словами, в какой-то момент очистка данных может выводить -30, затем через 30 минут исходные данные изменились, и теперь на выходе будет +40,04. Я просто ищу способ, чтобы php автоматически раскрашивал его. Но это все еще ценная информация. Спасибо за помощь.
 – 
Masteryogurt
22 Июн 2017 в 07:17
Например, если бы я мог просто изменить предоставленный вами код, чтобы сказать $ output = 'echo $ ret_ [7]; это сделало бы это. Я сомневаюсь, что у меня есть кодировка.
 – 
Masteryogurt
22 Июн 2017 в 07:18
Это определенно будет работать нормально, если вы хотите, чтобы данные обновлялись, как вы сказали в предыдущем комментарии, вам нужно использовать ajax, который сделает всю работу за вас.
 – 
Sahil Gulati
22 Июн 2017 в 07:21