Выполнить валюту из строки

Я хочу проанализировать валюту из строки в PHP, я посмотрел на число форматера, но не получил PHP 5.3 или возможность добавлять расширения.

Валюта будет существовать только один раз за строку и будет иметь префикс символа валюты, в моем случае знак фунта £. Валюта может быть в одном из следующих форматов:

£0.90 £100 £100.10 £1000 

Какой был бы лучший способ достижения этого?

редактировать

Вот пример строки:

 Paid a bill £153.93 

Я хочу получить значение валюты в переменной.

 (float)substr($input, strpos($input, "£")+1); 

Это даст вам следующие результаты:

 float(0.9) float(100) float(100.1) float(1000) float(153.93) 

EDIT : обновлено, чтобы отразить изменение вопроса. это предполагает, что все строки подобны тем, которые вы дали в качестве примера.

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

 $input = "£250.75"; $output = floatval(ltrim($input,"£")); echo $output; 250.75 

Вы также можете добавить другие валюты в список символов в ltrim:

 $output = floatval(ltrim($input,"£$¢")); 

Это разделило бы $ или £ или ¢ с левой стороны вашего номера, а также на пустое пространство, которое нарушило бы решение, выше которого использует strpos. Кроме того, это даст тот же результат, если в некоторых случаях символ валюты был оставлен.

 preg_match('/(?<=£)(?=[\d.]*\d)(\d*(?:\.\d*)?)/', $input, $matches); 

найдет матч в любом из них:

  • £ 0,10
  • £ 0.10
  • £ 100
  • £ 100,00

и т.п.

Вы можете сделать это с регулярным выражением ($ matches [1] будет иметь ваше значение):

 preg_match('/£([0-9]+|[0-9]+\.?[0-9]{2})/', $text, $matches); 
 $price = (float) substr($input, 1, strlen($input) - 1);