2011-11-23 16 views
8

Tengo un desafío tratando de hacer esto de manera confiable para todas las cadenas posibles.Extraer el monto en dólares de la cadena - expresiones regulares en PHP

Éstos son los posibles valores de $ cadena:

Hay un nuevo precio objetivo de $ 66
Hay un nuevo $ 105.20 precio objetivo
Hay un nuevo precio objetivo de $ 25,20

Quiero una nueva $ dollar_amount para extraer solo el monto en dólares de las cadenas de muestra anteriores. p.ej. $ dollar_amount = 66/105.20/25.20 en casos anteriores. ¿Cómo puedo hacer esto de manera confiable con una declaración de expresiones regulares en PHP? Gracias

+4

Debe aceptar respuestas a las preguntas anteriores. Es más probable que la gente quiera ayudarte. –

+0

posible duplicado de [RegEx - ¿Cómo extraer el precio?] (Http://stackoverflow.com/questions/2430696/regex-how-to-extract-price) – kenorb

Respuesta

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

será probablemente el más adecuado uno

9

Prueba esto:

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

Explicación:

" 
(?<=  # 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

¡genial con la explicación! –

3

lo que necesita Esta expresión regular:

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

Cuál es la función que cumplen con sus necesidades depende de usted.

puede encontrar a continuación, las funciones de expresiones regulares para PHP aquí: http://www.php.net/manual/en/ref.pcre.php

Cuestiones relacionadas