2011-01-04 18 views
4

私はこのことについて研究してきましたが、答えは正規表現で行うと信じていますが、私はそれらの周りに頭を浮かべることができません。PHP - 2文字の間の文字列の一部を選択

私は数多くの文字列を持っており、2文字の間の数字を選択する必要があります。ここでは例として文字列

&user18339=18339,20070103,175439,pmt,793,A/3/1/2,335,793,A/3/1/2, 

がある私はA/3/1/2,後、私は335を選択する必要があります。この例では、次の,

前に発生した番号が必要です。私はこれを行うことができます爆発しかし、私は文字列から複数の番号を取得する必要がある場合、次の例のように問題に実行します。ここで

は、別の例の文字列再び

&user31097=31097,20070105,092612,pmt,4190,A/3/1/2,142,1162,A/3/1/1,22,2874,A/3/1/2,1046,4622,A/3/1/2,25,2872,A/3/1/2, 

である私はA/3/1/2,後、次の,前の番号を取得する必要があります。ですから、この例では142104625とします。

誰かが私にこれを行う方法を教えていただけたら、それは非常に感謝します。

+0

あなたはあなたの例では "A/3/1/2" のいくつかの出現を持って、そしてそれをどうするかを指定していませんでした。 –

+0

"pmt"文字列の後の "A /#/#/#"シーケンスの後に続く "整数"ですか? (例えば、1,2、n個のオカレンスが存在する可能性があります) – scunliffe

+0

これらの値には何らかのセマンティックな意味がありますか? – Gordon

答えて

3
$string = '&user31097=31097,20070105,092612,pmt,4190,A/3/1/2,142,1162,A/3/1/1,22,2874,A/3/1/2,1046,4622,A/3/1/2,25,2872,A/3/1/2,'; 
preg_match_all('/A\/3\/1\/2,([0-9]*?),/', $string, $matches); 
var_dump($matches); 
+1

@ JWH89、この回答がうまくいく場合は、回答にチェックマークを付ける必要があります。また、あなたに有益だった回答を投票してください。答えが*役に立たなかった場合、なぜそれがあなたのためにうまくいかなかったのかというコメントは、誰もが最高の答えを見つけ出すのを助けます。 –

2
preg_match_all('/A\/3\/1\/2,([^,]+),/', $input, $matches = array()); 
print_r($matches); 
+0

[^、]は、 "、"魔女も文字列にマッチするまで何かにマッチします。エリスミングではなく番号を取得する方法を尋ねます。 –

1
if(preg_match_all('#A/3/1/2,([^,]*),#',$str,$matches)) {       
     // $matches[1] will have the required results. 
} 

See it in action

+0

[^、]は "、"まで魔法の文字列にもマッチします。 –

関連する問題