2015-02-06 2 views
0

У меня есть этот total USD100.75 from string.I я получаю следующее слово, как этотПолучить строку между двумя другими строками

$s = 'total USD100.75 from'; 
$r = preg_match_all('/(?<=(total))(\s\w*)/',$s,$matches); 
print_r($matches[0]); 

Однако я хотел бы получить строку между двумя определенными строками т.е. total и from. Как я могу получить среднюю строку ?.

+0

Пожалуйста, проверьте мой ответ, он решит вашу проблему. Позвольте мне знать, что вы все еще сталкиваетесь с любыми проблемами. –

+0

Спасибо за ответ. Ответ Элона лучше подходит для моей ситуации, а не то, что ваш ответ не является отличным ответом. Приветствия. – user3272483

ответ

1

Вы также можете использовать regexp для этого, например.

'/total (.*?) from/' 
0

Вы можете взорвать свою строку пробелом.

$s = 'total USD100.75 from';  
$s1 = explode(" ", $s); 
echo $s1[1]; 

Выход

USD100.75 

Demo

1

substr Использование и strlen:

echo substr($string, strlen("total "), -strlen(" from")); 
0

Регулярное expressi Это простой способ сделать это. Вам просто нужно понять основы. Вы достигнете того, что вы хотите с помощью следующей схеме:

total\s(.*)\sfrom 
0

@ user3272483, пожалуйста, проверьте ниже ответ на ваше решение.

$matches = array(); 
preg_match("/total (.*?) from/", 'total USD100.75 from', $matches); 
print_r($matches); 
1

Я не уверен, специфики вашего языка, но в Java:

(?USD[0-9]+\.[0-9]{2}) 

будет работать.

  1. "USD", а затем
  2. Один или более цифр, а затем
  3. буквального "",
  4. с последующими двумя цифрами.

Если у вас есть запятые, вы можете попробовать:

(?USD[0-9]{1,3}(,?[0-9]{3})*\.[0-9]{2}) 
  1. "USD", а затем 1-3 цифр, а затем,
  2. любое количество групп: необязательная запятая с последующим на 3 цифрами, а затем
  3. десятичную, а затем
  4. две цифры
+0

Отличный ответ Nields.I будет использовать ваш ответ, когда я переношу приложение в java через несколько месяцев. – user3272483

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