php preg_match_all获取字符串块

时间:2017-11-23 06:22:48

标签: php regex preg-match-all

我需要从我的文件中删除一些段落,它以一些字符串开头,并以特殊字符结束! 我使用preg_match_all来获得结果,请找到以下链接并选择preg_match_all http://www.phpliveregex.com/p/m5C

我希望输出像

item.isresult==1

2 个答案:

答案 0 :(得分:0)

在这种特定情况下,我不需要正则表达式,因为您希望第一部分位于第一部分!之前。 strstr()做得很好。 explode('!',$string,2)[0]可以正常运行,但它不是直接的黑客攻击,因为它会在从第一个元素中提取所需的字符串之前生成一个数组。

代码:

echo trim(strstr($string,'!',true));

输出:

ip vrf Access-Mgmt
 rd 65000:3298
 route-target export 65000:4585
 route-target export 65000:4717
 route-target import 65000:4585
 route-target import 65000:2659

或者,如果您没有定位第一个文本块,而是想要Access-Mgmt块,则可以preg_match()使用此模式:/ip vrf Access-Mgmt[^!]+/ Demo或修剪带有/ip vrf Access-Mgmt[^!]+(?=\R)/的尾随换行符。

以下是这些电话的外观:

var_export(preg_match('/ip vrf Access-Mgmt[^!]+/',$string,$out)?$out[0]:'fail');
// or
var_export(preg_match('/ip vrf Access-Mgmt[^!]+(?=\R)/',$string,$out)?$out[0]:'fail');
// or
var_export(preg_match('/ip vrf Access-Mgmt[^!]+/',$string,$out)?trim($out[0]):'fail');

答案 1 :(得分:-1)

您可以在http://www.phpliveregex.com/p/m5H

结帐preg_match_all

我所做的是将字符串分解为条件([^!] *)!并替换 $ 0

<强>解释

( - start capture group
  [ - start capture group
    ^! - match anything but ! symbol
  ] - start capture group
  * - match 0 or more occurances
) - start capture group
! - followed by ! symbol

$0 - First capture group

如果这解决了您的使用案例,请告诉我。

<强>输出:

1   =>  Array(
    0   =>  Array(
        ip vrf Access-Mgmt
         rd 65000:3298
         route-target export 65000:4585
         route-target export 65000:4717
         route-target import 65000:4585
         route-target import 65000:2659
    ),
    1   =>  Array(
        ip vrf Atheeb-VoIP
         rd 65000:4592
         import map Atheeb-VoIP_Imp
         route-target export 65000:6277
         route-target import 65000:6275
         route-target import 65000:6276
         route-target import 65000:6277
    ),
    2   =>  Array(
        ip vrf CISCO
         rd 65000:1
         route-target export 65000:1
         route-target import 65000:1
    ),
    3   =>  Array(
        ip vrf EBU-Modem-DHCP
         rd 10:10
         route-target export 65000:6475
         route-target import 65000:6476
    ),
    4   =>  Array(
        ip vrf ER-DCN
         rd 65000:3719
         route-target export 65000:5241
         route-target import 65000:5241
         route-target import 65000:5242
    ),
    5   =>  Array(
        ip vrf ER-LTE-Media-Signalling
         rd 65000:3723
         route-target export 65000:5245
         route-target import 65000:5245
         route-target import 65000:3507
         route-target import 65000:3511
         route-target import 65000:5535
    ),
    6   =>  Array(
        ip vrf ER-LTE-OAM
         rd 65000:3724
         route-target export 65000:5247
         route-target import 65000:5247
    ),
)