2017-11-14 2 views
0

사용자가 가격을 기준으로 등록한 제품을 주문해야합니다.문자열을 숫자로 변환하고 주문시 점과 쉼표를 사용합니다.

저는 WordPress를 사용하고 있는데 사용자가 제품을 광고 할 때 input = text를 통해 필드를 얻은 다음 함수로 변환합니다.

변환 된 숫자를받는 필드는 텍스트 필드이기 때문에 변경할 수 없습니다.

그래서 게시물을 반복하고 내용을 가져올 때 같은 기능을 사용하여 숫자를 변환했습니다.

시각적 인면에서는 완벽하게 작동합니다 ...하지만 가격을 기준으로 주문하려고하면 엉망이됩니다. 여기

함수 내가이된다

//convert the number wich is a string, to float 
function tofloat($num) { 
    $dotPos = strrpos($num, '.'); 
    $commaPos = strrpos($num, ','); 
    $sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos : 
     ((($commaPos > $dotPos) && $commaPos) ? $commaPos : false); 
    if (!$sep) { 
     return floatval(preg_replace("/[^0-9]/", "", $num)); 
    } 

    return floatval(
     preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . ',' . 
     preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num))) 
    ); 
} 
$value = get_field('preco_anuncio'); 
$precoFinal = tofloat($value); 

모든 아이디어를 어떻게 그걸 해결하기 위해? 점과 쉼표로 '시각적'을 보존해야합니다. 좋아요 : 3.567,00 €

답변

0

좋아, 그래서 작동하도록했습니다. 그것이 올바른 길인지 아니면 최선의 길인지를 모릅니다. 그러나 그것은 내 문제를 해결했고 그것에 문제가없는 것 같습니다. 여기

내가 무슨 짓을 :

  1. 내가 가진 input는 텍스트 입력입니다.

  2. JavaScript를 사용하여 시각적으로 통화 필드처럼 보입니다.

  3. 데이터베이스에 등록 할 때, 나는 게시 기능 toFloat로 변환 : ($ precoAd를

    로 number_format :

    function tofloat($num) { 
        $dotPos = strrpos($num, '.'); 
        $commaPos = strrpos($num, ','); 
        $sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos : 
        ((($commaPos > $dotPos) && $commaPos) ? $commaPos : false); 
        if (!$sep) { 
         return floatval(preg_replace("/[^0-9]/", "", $num)); 
    } 
    
    return floatval(
        preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . ',' . 
        preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num))) 
    ); 
    } 
    
  4. 그럼 내가 어떤 점 또는 공백을 제거하기 위해 number_format()를 사용 , 2, ',', ''); 내가 다시 데이터베이스에서 값을 얻을 때

  5. , 정말 그것이 내가 필요로하는 모양 number_format()에 다시 전달합니다

    로 number_format ($ 값, 2 ',', '.')

관련 문제