PHP比拆分字符串更简单

时间:2014-09-02 10:33:19

标签: php

我想知道是否有一种更简单,更好,更有效的方法从字符串中提取数据,而不是将其分割成碎片并将这些碎片存储在变量中。例如,我有一行包含一些/分隔的字段(注意:并非所有字段都是/分开的)。

/ ST = XX / L = XX / O = XX / CN = Cliento /

我只需要获取CN字段的值。对于我现在所做的事情:

       preg_match('/\/CN=[a-z_\-0-9].*\//i', $line, $client3);
       $client2 = split('=', $client3[0]);
       $client1 = split('/', $client2[1]);
       print 'Client: '. $client1[0]."\n";

但我确信有更好的解决方案。

2 个答案:

答案 0 :(得分:0)

您可以使用子字符串返回您需要的匹配部分,而不是进行两次拆分:

$line = '/ST=XX/L=XX/O=XX/CN=Cliento/';
preg_match('/\/CN=[a-z_\-0-9].*\//i', $line, $matches);
echo substr($matches[0], 4, -1);

答案 1 :(得分:0)

我会用一个正则表达式尝试这个。以下表达式可以正常工作:

/(?<=CN\=)[a-zA-Z_\-0-9]+/

这个reqular表达式提取“CN =”之后的所有内容。还需要在大海捞针中有一个“CN =”。