2016-04-22 9 views
1

文字列から文字列を抽出したい。Preg Match Ext

私は、次の文字列があります:私はすでに、このパターンを試したいずれかのint値

可能性があり"x"、抽出したい

"date-x-days" 

を:〜(日 - )*( - 日)〜 しかし、それは私に "日付"と "日"を返すだけですが、番号を受け取りたいと思います。

どうすればいいですか?

乾杯、 ニクラス

+0

''〜\ d +〜''だけではないのはなぜですか? –

+0

あなたはあなたの文字列の擬似パターンを書いて、あなたがその文字列から欲しいものを正確に定義しました。これはとても良いです!あなたはまた、あなたが持っている知識を使ってそれをやろうとしました!次のステップとして、ここにあなたの正規表現を置くことができます:https://regex101.com/そしてあなたの正規表現が現在何をしているかを調べてください。あなたはまた、このQ&Aをチェックアウトすることができます:http://stackoverflow.com/q/6278296/3933332とあなたの現在の正規表現を変更するためにそれを使用してください。 – Rizier123

+0

'sscanf(" date-345-days "、" date-%d-days "、$ days);エコー$ days; ' – Gordon

答えて

0
$returnValue = preg_match('/-(\d+)-/', '[date-454-days]', $matches); 
print_r($matches); 
+0

これは、おかげさまでほぼ間違いなく! - しかし、私の文字列には[日付 - 3日後]のテキストが多くあります - 日付と日付をパターンに統合することは可能でしょうか? –

+0

このパターンを試してください: ''/date - (\ d +) - days/'' – ssnake

+0

パーフェクト!ありがとう! –

2

これは単に、爆発の機能によって行わことができます。あなたが何かを編集する必要がある場合は、簡単にそれを行うことができますので、あなたは、新しい値として文字列の各部分をキャッチします。このパターンでは、コード

$arr = explode('-','[date-x-days]'); 
echo $arr[1]; 
0

下にしてみてください。

preg_match("/(date)-(\d+)-(days)/", "date-45-days", $output_array); 
echo $output_array[2]; //45 

Var_dump(output_array);//= 
array(4 
    0 => date-35-days 
    1 => date 
    2 => 35 
    3 => days 
) 

ここでそれを参照してください: http://www.phpliveregex.com/p/frpあなたはすべての部品が順序である場合にのみキャッチ見ることができるように。

+0

完璧!ありがとう! –