2017-02-21 4 views
0

私はいくつかのデータを持っていますので、値を見つけたいと思います。preg_match関数を試してみてください。値を見つけるのは簡単です。次のコードを試してみてください。コード私は$ aの値を取得していますが、私はここで、A1 $の値を見つけることにすべてのものを試してみてくださいので、私は$ A1の値または何を得るために何をすべきか、今メートルのサンプルコードpreg_matchが正しく動作しない

$data=Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP- 
pas:sami 
preg_match('#Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - 
lpm:(.*?) - pas:(.*?)#',$data,$matches); 
$a=$matches[3]; 
$a1=$matches[6]; 

であるが、それ

をするために右のコードです
+0

意味はありません....「print_r'」と表示されます –

+0

再現可能なコードを提供してください。 'pdd'と' lpm'の間には、文字列に新しい行はありません。また、 '。*?'よりも厳密な正規表現を書いています。 – chris85

答えて

1

最後の単語をregexに置き換えて、単語全体と一致させます。現在、空白が返されます(print_rが配列に一致する場合)。次のように

使用regex:あなたの最後のブラケットは、ワイルドカードでlaziness markを使用しているので

preg_match('#Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*)#',$data,$matches); 
1

、それは他のルールにそれを必要と除いて何も一致しません。全体一致の終了を指定する他の規則はありません。したがって、最後の部分samiは正規表現によって単純にスキップされます。あなたはこれを調べることができます

<?php 

$data="Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami"; 
preg_match('#Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*?)#',$data,$matches); 

var_dump($matches); 

どの出力この:全体的に一致する文字列($matches[0])値が実際に最後:で停止し

array(7) { 
    [0]=> 
    string(70) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:" 
    [1]=> 
    string(10) "29-05-2016" 
    [2]=> 
    string(5) "11:36" 
    [3]=> 
    string(10) "9530489323" 
    [4]=> 
    string(4) "9339" 
    [5]=> 
    string(6) "78JIOP" 
    [6]=> 
    string(0) "" 
} 

注意してください。そのため、空の文字列が$matches[6]にあります。

<?php 

$data="Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami"; 
preg_match('#^Date:(.*?) (.*?) - Mo:91(.*?) - pdd:(.*?) - lpm:(.*?) - pas:(.*?)$#',$data,$matches);   

var_dump($matches); 

お知らせ私が追加した^$:問題を修正する正規表現をChainging

。それらは "文字列の始まり"と "文字列の終り"と一致します。したがって、最後の文字列:から入力文字列の最後までの文字列が含まれます。これは次を出力します:

array(7) { 
    [0]=> 
    string(74) "Date:29-05-2016 11:36 - Mo:919530489323 - pdd:9339 - lpm:78JIOP - pas:sami" 
    [1]=> 
    string(10) "29-05-2016" 
    [2]=> 
    string(5) "11:36" 
    [3]=> 
    string(10) "9530489323" 
    [4]=> 
    string(4) "9339" 
    [5]=> 
    string(6) "78JIOP" 
    [6]=> 
    string(4) "sami" 
}