preg_match以格式提供句子

时间:2012-08-15 04:51:52

标签: preg-match

我的数据库中有一个文本格式:

Name : John Thompson
Address : 123 street abc state xyz country

如何通过preg_match获得Name的值,即Johan Thompson? 我试图避免长时间的爆炸程序,因为除了姓名和地址之外我还会得到其他的东西。

我需要有一个简单的正则表达式,可以给我一个包含句子的字符串afer Name:,Address:等等。

1 个答案:

答案 0 :(得分:0)

简单地说:

$matches = array();
preg_match_all('/^(?P<propname>[^:]+):\s*(?P<propval>.*)$/m', $string, $matches, PREG_SET_ORDER);
print_r($matches);

此正则表达式匹配冒号前的所有内容并在propname中捕获它,其余部分将在propval中捕获。 得到的结构将是

Array
(
    [0] => Array
        (
            [0] => Name : John Thompson
            [propname] => Name 
            [1] => Name 
            [propval] => John Thompson
            [2] => John Thompson
        )

    [1] => Array
        (
            [0] => Address : 123 street abc state xyz country
            [propname] => Address 
            [1] => Address 
            [propval] => 123 street abc state xyz country
            [2] => 123 street abc state xyz country
        )
)

由于这是一个简单的正则表达式,我认为,你不熟悉正则表达式,所以我强烈建议你阅读J.F. Friedl - Mastering Regular expressions,你很快就会轻松制作出精彩的表达方式: - )