【问题标题】:php - get content from second pair of quotes in stringphp - 从字符串中的第二对引号中获取内容
【发布时间】:2014-07-30 04:07:13
【问题描述】:

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

文字

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

【问题讨论】:

  • $matches[2][1] 会得到想要的结果
  • ...或$matches[0][1] 保留引号。

标签: php regex quotes


【解决方案1】:

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

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

print_r($database_names);

【讨论】:

    【解决方案2】:

    你可以这样使用它:

    $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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-14
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多