-1

私のデータベースには次のようなテキスト形式があります。

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

名前 ie の値を取得するにはどうすればよいですか? 名前と住所以外のものも取得するため、爆発の長い手順を避けようとしています。

Name :、Address : などの後に文を含む文字列を取得できる単純な正規表現が必要です。

4

1 に答える 1

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
        )
)

これは単純な正規表現なので、正規表現に慣れていないと思いますので、JF Friedl - Mastering Regular Expressionを読むことを強くお勧めします。すぐに素晴らしい表現を簡単に作成できます :-)

于 2012-08-15T09:42:53.497 に答える