查找文本并处理PHP变量的值
我有硬核。我在PHP变量中有这个文本,它来自SSH执行的命令,我想将文本提取到变量中 下面是示例文本:查找文本并处理PHP变量的值,php,arrays,regex,string,substr,Php,Arrays,Regex,String,Substr,我有硬核。我在PHP变量中有这个文本,它来自SSH执行的命令,我想将文本提取到变量中 下面是示例文本: Huawei Integrated Access Software (MA5683T). Copyright(C) Huawei Technologies Co., Ltd. 2002-2013. All rights reserved. -----------------------------------------------------------------------
Huawei Integrated Access Software (MA5683T).
Copyright(C) Huawei Technologies Co., Ltd. 2002-2013. All rights reserved.
-----------------------------------------------------------------------------
User last login information:
-----------------------------------------------------------------------------
Access Type : SSH
IP-Address : 0.0.0.0 ssh
Login Time : 07.02.2017 20:01:48+01:00
Logout Time : 07.02.2017 20:01:59+01:00
-----------------------------------------------------------------------------
MA5683T>enable
MA5683T#display ont autofind all
----------------------------------------------------------------------------
Number : 1
F/S/P : 0/4/0
Ont SN : 48575443E1EAC883 (HWTC-E1EAC883)
Password : 0x00000000000000000000
Loid :
Checkcode :
VendorID : HWTC
Ont Version : 635.A
Ont SoftwareVersion : V3R015C10S106
Ont EquipmentID : 010H
Ont autofind time : 06.02.2017 11:35:08+01:00
----------------------------------------------------------------------------
Number : 2
F/S/P : 0/4/0
Ont SN : 48575443ED9B1582 (HWTC-ED9B1582)
Password : 0x00000000000000000000
Loid :
Checkcode :
VendorID : HWTC
Ont Version : 635.A
Ont SoftwareVersion : V3R015C10S106
Ont EquipmentID : 010H
Ont autofind time : 07.02.2017 15:57:35+01:00
----------------------------------------------------------------------------
Number : 3
F/S/P : 0/4/1
Ont SN : 48575443E1DA5683 (HWTC-E1DA5683)
Password : 0x00000000000000000000
Loid :
Checkcode :
VendorID : HWTC
Ont Version : 635.A
Ont SoftwareVersion : V3R015C10S106
Ont EquipmentID : 010H
Ont autofind time : 07.02.2017 09:20:57+01:00
----------------------------------------------------------------------------
The number of GPON autofind ONT is 3
MA5683T#
我需要提取“Ont SN”(例如48575443E1EAC883)和“F”、“S”和“p”值(文本中的F/S/p:0/4/0)
输出将是:
$serial = "48575443E1EAC883"
$f = 0
$s = 4
$p = 0
因为有3条记录,除以------行,我需要放入数组
谢谢您的建议。对于匹配的Ont-SN:
/Ont SN\s*:\s*([\w]+)/g
/F\/S\/P\s*:\s*(\d+)\/(\d+)\/(\d+)/g
对于匹配的F/S/p:
/Ont SN\s*:\s*([\w]+)/g
/F\/S\/P\s*:\s*(\d+)\/(\d+)\/(\d+)/g
文本提取非常简单,但是使用原始字符串而不是我们在这里看到的字符串会更容易。序列号是十六进制还是字母数字?我认为
F/S/P\h+:\h+(?\d+)/(?\d+)/(?\d+)\S*Ont\h+SN\h+:\h+(?[A-F\d]+)
就可以了,然后你可以检查匹配的索引,看看它是什么。(也不要在这个正则表达式中使用/
分隔符,否则需要转义。)序列是十六进制的。到目前为止,我没有任何东西。我的目标是今晚完成。所以提供的正则表达式可以工作?是的,但是目前我只有一条来自SSH命令的记录,所以输出有SN三倍:数组([0]=>F/S/P:0/4/0 Ont-SN:48575443E1EAC883[F]=>0[1]=>0[S]=>4[2]=>4[P]=>0[3]=>0[serial]=>48575443E1EAC883[4]=>48575443E1EAC883]好的,但我需要将其抓取到数组中,因为输出必须打印为带行的表。列为SN、F、S、P。