我想检索多行文本文件和处理行。
示例:
$user = system('getent passwd') ."\n";
结果例子:
tcpdump:x:72:72::/:/sbin/nologin
guest:x:500:500:Guest User:/home/guest:/bin/bash
dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
dovenull:x:495:488:Dovecots unauthorized user:/usr/libexec/dovecot:/sbin/nologin
sa-milt:x:494:487:SpamAssassin Milter:/var/lib/spamass-milter:/bin/bash
demo1:*:2417:100:albert DemoUn:/home/gir_net/demo1:/bin/bash
demo2:*:2418:100:alfred DemoDeux:/home/gir_net/demo2:/bin/bash
demo3:*:2419:100:alphonse DemoTrois:/home/gir_net/demo3:/bin/bash
demo4:*:2420:100:alcide DemoQuatre:/home/gir_net/demo4:/bin/bash
我想检索命令结果中包含“/ home /”的整行。 我尝试了很多解决方案,但它不起作用。
我检索后,我想提取包含“/ home /".
的行的索引信息答案 0 :(得分:1)
以下是使用正则表达式的可能解决方案:
$user = shell_exec('getent passwd');
preg_match_all('/\/home\/[^:]+/', $user, $matches);
foreach ($matches[0] as $dir) {
print $dir;
}
/* will print:
/home/guest
/home/gir_net/demo1
/home/gir_net/demo2
/home/gir_net/demo3
/home/gir_net/demo4
*/
<强>更新强>
如果要显示整行,则更容易使用字符串函数而不是正则表达式。
$user = shell_exec('getent passwd');
$user = explode("\n", trim($user));
foreach ($user as $line) {
if (strpos($line, '/home/') !== FALSE) {
echo $line."\n";
}
}
答案 1 :(得分:0)