2011-11-23 34 views
8

tôi đang thử thách một thử thách để làm điều này một cách đáng tin cậy cho tất cả các chuỗi có thể.Trích xuất số tiền đô la từ chuỗi - regex trong PHP

Dưới đây là các giá trị có thể có của $ str:

Có một mức giá mục tiêu $ 66 mới
Có một $ 105,20 Giá mục tiêu mới
Có một $ 25.20 giá mục tiêu mới

Tôi muốn một $ dollar_amount mới để trích xuất chỉ số tiền đô la từ các chuỗi mẫu ở trên. ví dụ. $ dollar_amount = 66/105,20/25,20 trong các trường hợp trên. Làm thế nào tôi có thể làm điều này một cách đáng tin cậy với một câu lệnh regex trong PHP? Cảm ơn

+4

Bạn nên chấp nhận câu trả lời cho các câu hỏi trước đây của mình. Mọi người sẽ có nhiều khả năng muốn giúp bạn. –

+0

bản sao có thể có của [RegEx - Cách trích xuất giá?] (Http://stackoverflow.com/questions/2430696/regex-how-to-extract-price) – kenorb

Trả lời

11
preg_match('/\$([0-9]+[\.]*[0-9]*)/', $str, $match); 
$dollar_amount = $match[1]; 

sẽ có lẽ là phù hợp nhất một

9

Hãy thử điều này:

if (preg_match('/(?<=\$)\d+(\.\d+)?\b/', $subject, $regs)) { 
    #$result = $regs[0]; 
} 

Giải thích:

" 
(?<=  # Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) 
    \$  # Match the character “\$” literally 
) 
\d  # Match a single digit 0..9 
    +  # Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
(  # Match the regular expression below and capture its match into backreference number 1 
    \.  # Match the character “.” literally 
    \d  # Match a single digit 0..9 
     +  # Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
)?  # Between zero and one times, as many times as possible, giving back as needed (greedy) 
\b  # Assert position at a word boundary 
" 
+0

tuyệt vời với lời giải thích! –

3

Bạn cần biểu thức chính quy này:

/(\$([0-9\.]+))/ 

chức năng đáp ứng nhu cầu của bạn là tùy thuộc vào bạn là gì.

Bạn có thể tìm thấy sau đó chức năng regex cho PHP tại đây: http://www.php.net/manual/en/ref.pcre.php

Các vấn đề liên quan