2011-01-04 8 views
4

Я занимаюсь этим исследованием, и я верю, что ответ заключается в регулярных выражениях, но я просто не могу обойти их вокруг.PHP - выберите часть строки между двумя символами

У меня есть ряд строк, и мне нужно выбрать число между двумя символами. Ниже приведен пример снабжать струной, тетивой и т.п.

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

мне нужен номер, который происходит после того, как A/3/1/2, и до следующего ,

В этом примере нужно выбрать 335. Я могу сделать это, используя explode, однако я столкнулся с проблемами, когда мне нужно получить более одного номера из строки, как в примере ниже.

Вот другой пример снабжать струной, тетивой и т.п.

&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, и перед следующим ,. Поэтому в этом примере я хотел бы принять 142, 1046 и 25.

Если кто-нибудь может сообщить мне, как это сделать, мы будем очень благодарны.

+0

У вас есть несколько вхождений "A/3/1/2" в ваших примерах, и не указали, что делать с этим. –

+0

Всегда ли это «целое число» после последовательности «A/#/#/#» после строки «pmt»? (например, могут быть 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

[^,] будет соответствовать чему угодно до тех пор, пока "," ведьма не будет соответствовать строке тоже, он спрашивает, как вывести число, не считая. –

Смежные вопросы