如何使用HTML链接打印PHP数组内容?

时间:2018-02-08 13:13:48

标签: php html

我似乎无法找到满足我特定需求的解决方案。我有以下内容:

|-----|--------|
| Id  | Litres |
|-----|--------|
|  1  | 2.75   |
|-----|--------|
|  1  | 2.113  |
|-----|--------|
|  2  | 1.23   |
|-----|--------|

当您将浏览器指向计算机时,您将获得有关它的一些基本信息,指向其iLO的链接以及已安装软件的格式良好的列表。作为代码的最后一行,我宁愿创建一个单击的链接,每行显示$ sftwrlist数组一个包。我用href尝试过各种各样的东西,但我不确定href是不是合适的方法。提前谢谢。

3 个答案:

答案 0 :(得分:0)

如果要将从rpm -qa | sortexplode()返回的每个项目的链接应用到数组中,然后将链接应用到数组,则可以在输出或之前执行此操作

<?php
$sftwrlist = `rpm -qa | sort`;

$array = explode(PHP_EOL, $sftwrlist);

$rpmlink = 'http://www.rpm-find.net/linux/rpm2html/search.php?query=';

array_walk($array, function(&$value, $key) use ($rpmlink) {
    $value = sprintf('<a href="%s%s">%s</a>', $rpmlink, $value, $value);
});

print_r($array);

https://3v4l.org/lKTm6

<强>结果:

Array
(
    [0] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=filesystem-2.4.0-1">filesystem-2.4.0-1</a>
    [1] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=comps-extras-11.1-1.1">comps-extras-11.1-1.1</a>
    [2] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=gnome-mime-data-2.4.2-3.1">gnome-mime-data-2.4.2-3.1</a>
    [3] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=glibc-2.5-12">glibc-2.5-12</a>
    [4] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=atk-1.12.2-1.fc6">atk-1.12.2-1.fc6</a>
    [5] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=libICE-1.0.1-2.1">libICE-1.0.1-2.1</a>
    [6] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=db4-4.3.29-9.fc6">db4-4.3.29-9.fc6</a>
    [7] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=elfutils-libelf-0.125-3.el5">elfutils-libelf-0.125-3.el5</a>
    [8] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=ncurses-5.5-24.20060715">ncurses-5.5-24.20060715</a>
    [9] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=libsepol-1.15.2-1.el5">libsepol-1.15.2-1.el5</a>
    [10] => <a href="http://www.rpm-find.net/linux/rpm2html/search.php?query=libcap-1.10-26">libcap-1.10-26</a>
)

或者,您甚至可以解析名称和版本,以便更好地显示。

<?php
$array = explode(PHP_EOL, $sftwrlist);

array_walk($array, function(&$value, $key) {
    preg_match('/-\d/', $value, $match, PREG_OFFSET_CAPTURE);

    $offset = !empty($match) ? $match[0][1] : strlen($value);

    $value = [
        'name' => substr($value, 0, $offset), 
        'version' => trim(substr($value, $offset), '-')
    ];
});

print_r($array);

https://3v4l.org/HVKfE

<强>结果:

Array
(
    [0] => Array
        (
            [name] => filesystem
            [version] => 2.4.0-1
        )

    [1] => Array
        (
            [name] => comps-extras
            [version] => 11.1-1.1
        )

    [2] => Array
        (
            [name] => gnome-mime-data
            [version] => 2.4.2-3.1
        )

    [3] => Array
        (
            [name] => glibc
            [version] => 2.5-12
        )

    [4] => Array
        (
            [name] => atk
            [version] => 1.12.2-1.fc6
        )

    [5] => Array
        (
            [name] => libICE
            [version] => 1.0.1-2.1
        )

    [6] => Array
        (
            [name] => db4
            [version] => 4.3.29-9.fc6
        )

    [7] => Array
        (
            [name] => elfutils-libelf
            [version] => 0.125-3.el5
        )

    [8] => Array
        (
            [name] => ncurses
            [version] => 5.5-24.20060715
        )

    [9] => Array
        (
            [name] => libsepol
            [version] => 1.15.2-1.el5
        )

    [10] => Array
        (
            [name] => libcap
            [version] => 1.10-26
        )
)

答案 1 :(得分:0)

感谢所有回复。当我等着看每个人的建议时,我确实设法提出了一种方法。虽然它确实需要另一个PHP脚本而不是整个代码生活在一个脚本中。新脚本:

<?php
$sftwrlist = `rpm -qa | sort`;
?>

<b><u>Installed software</u></b>
<pre><?php echo print_r($sftwrlist);?></pre>

在原始剧本中:

<p><a href="sftwr.php">Installed Software</a><p/ >

所以至少我可以将它添加到我的新技巧中,但我现在将注意力转向这里的建议,看看我还能学到什么。当我找到自己的方式时,肯定会欢迎任何其他建议。

答案 2 :(得分:-1)

我通常使用:

<pre><?=json_encode($sftwrlist, JSON_PRETTY_PRINT);?></pre>

以JSON格式输出数组,这是人类可读的。

  

更新:HADn实际上没有回答你的问题。

您可以使用一些jquery代替锚标记来打开包含内容的新窗口。这样你就不需要乱搞重定向和路线了。

function newWindow() {
  var w = window.open();
  var html = $("pre").html();

    $(w.document.body).html(html);
}

$('a').click(function(e){
    e.preventDefault();
    newWindow();
})

P.S。 $ sftwrlist不是shell_exec&#39; d?