php - 从字符串中的第二对引号中获取内容

时间:2014-06-09 15:15:02

标签: php regex quotes

我正在尝试获取第二个引号的内容以及字符串中的第二个引号。现在我能够得到所有三个引号的内容。我究竟做错了什么?是否可以只在输出数组中打印第二个值?

文本

2014-06-02 11:48:41.519 -0700   Information 94  NICOLE  Client "[WebDirect] (207.230.229.204) [207.230.229.204]" opening database "FMServer_Sample" as "Admin".

PHP

if (preg_match_all('~(["\'])([^"\']+)\1~', $line, $matches))
                $database_names = $matches[2];

print_r($database);

输出

[WebDirect] (207.230.229.204) [207.230.229.204], FMServer_Sample, Admin

2 个答案:

答案 0 :(得分:3)

你可以这样使用它:

$re = '~(["\'])[^"\']+\1[^"\']*(["\'])([^"\']+)\1~';
$str = '2014-06-02 11:48:41.519 -0700   Information 94  NICOLE  Client "[WebDirect] (207.230.229.204) [207.230.229.204]" opening database "FMServer_Sample" as "Admin".';

if ( preg_match($re, $str, $m) )
   echo $m[3]; // FMServer_Sample

答案 1 :(得分:0)

匹配组从[0]开始,因为您正在使用preg_match_all,您将获得[3]组。该数组是第一个$ matches数组,因此它也从零开始。您可以像这样使用它:

if (preg_match_all('~(["\'])([^"\']+)\1~', $line, $matches))
                $database_names = $matches[0][1];

print_r($database_names);