我似乎无法找到满足我特定需求的解决方案。我有以下内容:
|-----|--------|
| Id | Litres |
|-----|--------|
| 1 | 2.75 |
|-----|--------|
| 1 | 2.113 |
|-----|--------|
| 2 | 1.23 |
|-----|--------|
当您将浏览器指向计算机时,您将获得有关它的一些基本信息,指向其iLO的链接以及已安装软件的格式良好的列表。作为代码的最后一行,我宁愿创建一个单击的链接,每行显示$ sftwrlist数组一个包。我用href尝试过各种各样的东西,但我不确定href是不是合适的方法。提前谢谢。
答案 0 :(得分:0)
如果要将从rpm -qa | sort
,explode()返回的每个项目的链接应用到数组中,然后将链接应用到数组,则可以在输出或之前执行此操作
<?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);
<强>结果:强>
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);
<强>结果:强>
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?