2013-03-05 2 views
6

как я могу взрыву $123 или USD123 или CAD$123 или 元123 динамически ввзорвать цены знак & номер

array [0] = "$" 
array [1] = 123 

?

$keywords = preg_split("/[^0-9]/", "$123"); 

выше мой код тестирования, но я не могу получить $ в array[0], любая идея?

спасибо

ответ

6
$string = '$123'; 

$string = preg_match('/^(\D+)(\d+)$/', $string, $match); 

echo $match[1]; // $ 
echo $match[2]; // 123 

Разбивка:

^(\D+) матч 1 или больше не цифра в beggining строки

(\d+)$ матч 1 или более цифр до конца строки

+1

Вы взяли слова мои прямо из моего рта! – Andrew

3

Попробуйте это, это сработает для всех.

$str = 'CAD$123'; 
$num = filter_var($str, FILTER_SANITIZE_NUMBER_INT); 
$curr = explode($num,$str); 

echo 'Your currency is '.$curr[0].' and number is '.$num; 
+0

http://stackoverflow.com/questions/3002254/split-currency-and-amount-from-a-string –

0

вы можете использовать это

$txt='$123'; 

    $re1='(\\$)'; # Any Single Character 1 
    $re2='(\\d+)'; # Integer Number 1 

    if ($c=preg_match_all ("/".$re1.$re2."/is", $txt, $matches)) 
    { 
     $c1=$matches[1][0]; 
     $int1=$matches[2][0]; 
     print "($c1) ($int1) \n"; 
    } 

Все кредиты http://txt2re.com

0

Вы можете использовать preg_match со следующими регулярок

preg_match('/([^0-9]*)([0-9\.]*)(.*)?/', '$20.99USD', $match); 
var_dump($match); 

выше будет производить

Array 
(
    [0] => $20.99USD 
    [1] => $ 
    [2] => 20.99 
    [3] => USD 
) 

Он может разобрать $, 20.99, USD, как отдельный индекс в массив

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