查找文本并处理PHP变量的值

查找文本并处理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. -----------------------------------------------------------------------

我有硬核。我在PHP变量中有这个文本,它来自SSH执行的命令,我想将文本提取到变量中

下面是示例文本:

  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。