我想知道是否有一种更简单,更好,更有效的方法从字符串中提取数据,而不是将其分割成碎片并将这些碎片存储在变量中。例如,我有一行包含一些/分隔的字段(注意:并非所有字段都是/分开的)。
/ 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";
但我确信有更好的解决方案。
答案 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 =”。