正则表达式从列表中捕获此文本

时间:2015-02-12 16:35:12

标签: php regex

我的文字:

URL: http://example.com
Type: department
Empty value:
Contact Name: John Doe
...

我想得到一个这样的数组:

array(
  'url'           => 'http://example.com',
  'type'          => 'department',
  'empty-value'   => '',
  'contact-mame'  => 'John Doe'
)

我正在做类似

的事情
preg_match_all( '/(url|type): (.*)/i', $string, $match );

但是$ match并没有按照我需要的顺序获得值,而且我也不知道如何捕获键。

此时转换为小写键和破折号并不重要。

你能建议任何正则表达式吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用preg_match_allarray_combine

$s = <<< EOF
URL: http://example.com
Type: department
Empty value:
Contact Name: John Doe
EOF;

preg_match_all('~^([^:]+):\h*(.*)$~m', $s, $matches);
$output = array_combine ( $matches[1], $matches[2] );
print_r( $output );

<强>输出:

Array
(
    [URL] => http://example.com
    [Type] => department
    [Empty value] =>
    [Contact Name] => John Doe
)