使用 php 解析能力搜索
Parse aptitude search using php
我正在使用 PHP 和 jquery 构建一个 UI,它将允许某人输入字符串并搜索 apt search
我想做的是分开(使用php)packaga name
、the architecture
就在/
之后,description of the package
就在description of the package
下面包和体系结构的行,因此我可以将这些数据推送到 JSON 集合中,并将其 return 推送到 jQuery.
我正在执行以下命令:
$data=shell_exec("sudo apt search $searchString")
我可以在 /
上使用 explosion 获取包名称和体系结构,但不知道如何获取下面的行
这是针对 php
进行搜索的示例输出:
wwwconfig-common/bionic 0.3.0 all
Debian web auto configuration
xine-ui/bionic 0.99.9-1.3 amd64
the xine video player, user interface
xjed/bionic 1:0.99.19-7 amd64
editor for programmers (x11 version)
xmlsysd/bionic 2.6.0-0ubuntu4 amd64
wulfware daemon to extract data from cluster nodes
yasat/bionic 848-1ubuntu1 all
simple stupid audit tool
yhsm-validation-server/bionic 1.2.0-1 all
Validation server using YubiHSM
yrmcds/bionic 1.1.8-1.1 amd64
memcached compatible KVS with master/slave replication
yubikey-server-c/bionic 0.5-1build3 amd64
Yubikey validation server
yubikey-val/bionic 2.38-2 all
One-Time Password (OTP) validation server for YubiKey tokens
zabbix-frontend-php/bionic 1:3.0.12+dfsg-1 all
network monitoring solution - PHP front-end
zendframework/bionic 1.12.20+dfsg-1ubuntu1 all
powerful PHP framework
zendframework-bin/bionic 1.12.20+dfsg-1ubuntu1 all
binary scripts for zendframework
感谢您的协助!
更新:
我可以使用爆炸“/”获取包名和体系结构,但我不知道如何获取下面的行。以为我可以找到一个漂亮的解决方案
这里有几种方法。
一种是使用 explode with array_map(您可以使用普通的 foreach 代替),另一种是使用正则表达式。
<?php
$str = 'wwwconfig-common/bionic 0.3.0 all
Debian web auto configuration
...';
$packages = array_map(function($item) {
$item = array_map('trim', explode("\n", trim($item)));
$line = explode(" ", $item[0]);
$line[0] = explode("/", $item[0]);
return [
'package' => $line[0][0],
'distro' => $line[0][1],
'version' => $line[1],
'arch' => $line[2],
'desc' => $item[1]
];
}, explode("\n\r", $str));
或使用正则表达式,
preg_match_all('#(?<package>.*?)/(?<distro>.*?) (?<version>.*?) (?<arch>.*?)\n (?<desc>.*?)\n\r#', $str, $packages);
$result = [];
foreach ($packages['package'] as $key => $value) {
$result[] = [
'package' => $packages['package'][$key],
'distro' => $packages['distro'][$key],
'version' => $packages['version'][$key],
'arch' => $packages['arch'][$key],
'desc' => $packages['desc'][$key]
];
}
print_r($result);
两者产生相同的结果:
Array
(
[0] => Array
(
[package] => wwwconfig-common
[distro] => bionic
[version] => 0.3.0
[arch] => all
[desc] => Debian web auto configuration
)
[1] => Array
(
[package] => xine-ui
[distro] => bionic
[version] => 0.99.9-1.3
[arch] => amd64
[desc] => the xine video player, user interface
)
[2] => Array
(
[package] => xjed
[distro] => bionic
[version] => 1:0.99.19-7
[arch] => amd64
[desc] => editor for programmers (x11 version)
)
[3] => Array
(
[package] => xmlsysd
[distro] => bionic
[version] => 2.6.0-0ubuntu4
[arch] => amd64
[desc] => wulfware daemon to extract data from cluster nodes
)
[4] => Array
(
[package] => yasat
[distro] => bionic
[version] => 848-1ubuntu1
[arch] => all
[desc] => simple stupid audit tool
)
[5] => Array
(
[package] => yhsm-validation-server
[distro] => bionic
[version] => 1.2.0-1
[arch] => all
[desc] => Validation server using YubiHSM
)
[6] => Array
(
[package] => yrmcds
[distro] => bionic
[version] => 1.1.8-1.1
[arch] => amd64
[desc] => memcached compatible KVS with master/slave replication
)
[7] => Array
(
[package] => yubikey-server-c
[distro] => bionic
[version] => 0.5-1build3
[arch] => amd64
[desc] => Yubikey validation server
)
[8] => Array
(
[package] => yubikey-val
[distro] => bionic
[version] => 2.38-2
[arch] => all
[desc] => One-Time Password (OTP) validation server for YubiKey tokens
)
[9] => Array
(
[package] => zabbix-frontend-php
[distro] => bionic
[version] => 1:3.0.12+dfsg-1
[arch] => all
[desc] => network monitoring solution - PHP front-end
)
[10] => Array
(
[package] => zendframework
[distro] => bionic
[version] => 1.12.20+dfsg-1ubuntu1
[arch] => all
[desc] => powerful PHP framework
)
)
我正在使用 PHP 和 jquery 构建一个 UI,它将允许某人输入字符串并搜索 apt search
我想做的是分开(使用php)packaga name
、the architecture
就在/
之后,description of the package
就在description of the package
下面包和体系结构的行,因此我可以将这些数据推送到 JSON 集合中,并将其 return 推送到 jQuery.
我正在执行以下命令:
$data=shell_exec("sudo apt search $searchString")
我可以在 /
上使用 explosion 获取包名称和体系结构,但不知道如何获取下面的行
这是针对 php
进行搜索的示例输出:
wwwconfig-common/bionic 0.3.0 all
Debian web auto configuration
xine-ui/bionic 0.99.9-1.3 amd64
the xine video player, user interface
xjed/bionic 1:0.99.19-7 amd64
editor for programmers (x11 version)
xmlsysd/bionic 2.6.0-0ubuntu4 amd64
wulfware daemon to extract data from cluster nodes
yasat/bionic 848-1ubuntu1 all
simple stupid audit tool
yhsm-validation-server/bionic 1.2.0-1 all
Validation server using YubiHSM
yrmcds/bionic 1.1.8-1.1 amd64
memcached compatible KVS with master/slave replication
yubikey-server-c/bionic 0.5-1build3 amd64
Yubikey validation server
yubikey-val/bionic 2.38-2 all
One-Time Password (OTP) validation server for YubiKey tokens
zabbix-frontend-php/bionic 1:3.0.12+dfsg-1 all
network monitoring solution - PHP front-end
zendframework/bionic 1.12.20+dfsg-1ubuntu1 all
powerful PHP framework
zendframework-bin/bionic 1.12.20+dfsg-1ubuntu1 all
binary scripts for zendframework
感谢您的协助!
更新:
我可以使用爆炸“/”获取包名和体系结构,但我不知道如何获取下面的行。以为我可以找到一个漂亮的解决方案
这里有几种方法。
一种是使用 explode with array_map(您可以使用普通的 foreach 代替),另一种是使用正则表达式。
<?php
$str = 'wwwconfig-common/bionic 0.3.0 all
Debian web auto configuration
...';
$packages = array_map(function($item) {
$item = array_map('trim', explode("\n", trim($item)));
$line = explode(" ", $item[0]);
$line[0] = explode("/", $item[0]);
return [
'package' => $line[0][0],
'distro' => $line[0][1],
'version' => $line[1],
'arch' => $line[2],
'desc' => $item[1]
];
}, explode("\n\r", $str));
或使用正则表达式,
preg_match_all('#(?<package>.*?)/(?<distro>.*?) (?<version>.*?) (?<arch>.*?)\n (?<desc>.*?)\n\r#', $str, $packages);
$result = [];
foreach ($packages['package'] as $key => $value) {
$result[] = [
'package' => $packages['package'][$key],
'distro' => $packages['distro'][$key],
'version' => $packages['version'][$key],
'arch' => $packages['arch'][$key],
'desc' => $packages['desc'][$key]
];
}
print_r($result);
两者产生相同的结果:
Array
(
[0] => Array
(
[package] => wwwconfig-common
[distro] => bionic
[version] => 0.3.0
[arch] => all
[desc] => Debian web auto configuration
)
[1] => Array
(
[package] => xine-ui
[distro] => bionic
[version] => 0.99.9-1.3
[arch] => amd64
[desc] => the xine video player, user interface
)
[2] => Array
(
[package] => xjed
[distro] => bionic
[version] => 1:0.99.19-7
[arch] => amd64
[desc] => editor for programmers (x11 version)
)
[3] => Array
(
[package] => xmlsysd
[distro] => bionic
[version] => 2.6.0-0ubuntu4
[arch] => amd64
[desc] => wulfware daemon to extract data from cluster nodes
)
[4] => Array
(
[package] => yasat
[distro] => bionic
[version] => 848-1ubuntu1
[arch] => all
[desc] => simple stupid audit tool
)
[5] => Array
(
[package] => yhsm-validation-server
[distro] => bionic
[version] => 1.2.0-1
[arch] => all
[desc] => Validation server using YubiHSM
)
[6] => Array
(
[package] => yrmcds
[distro] => bionic
[version] => 1.1.8-1.1
[arch] => amd64
[desc] => memcached compatible KVS with master/slave replication
)
[7] => Array
(
[package] => yubikey-server-c
[distro] => bionic
[version] => 0.5-1build3
[arch] => amd64
[desc] => Yubikey validation server
)
[8] => Array
(
[package] => yubikey-val
[distro] => bionic
[version] => 2.38-2
[arch] => all
[desc] => One-Time Password (OTP) validation server for YubiKey tokens
)
[9] => Array
(
[package] => zabbix-frontend-php
[distro] => bionic
[version] => 1:3.0.12+dfsg-1
[arch] => all
[desc] => network monitoring solution - PHP front-end
)
[10] => Array
(
[package] => zendframework
[distro] => bionic
[version] => 1.12.20+dfsg-1ubuntu1
[arch] => all
[desc] => powerful PHP framework
)
)