2014-02-10 3 views
0

Я использую эту функцию для преобразования квадратных метров в квадратную ногу.Обрезка запятой и пробелов с номера

$sinput = rtrim(get_field('fl_area'), ", \t\n"); 
if(trim($sinput) == "0"){echo ' ' ;} else {$soutput = metersToSquareFeet($sinput); echo $soutput . ' sq. m (' . number_format($sinput) . ' sq. f)' ;} 

function metersToSquareFeet($meters, $echo = true) 
{ 
    $m = $meters; 
    $valInFeet = $m*10.7639; 
    $valFeet = (int)$valInFeet; 
    if($echo == true) 
    { 
     echo $valFeet; 
    } else { 
     return $valFeet; 
    } 
} 

У меня есть проблема с линией:

rtrim(get_field('fl_area'), ", \t\n"); 

Пользователь вводит номер в формате 3,246 и я хочу, чтобы преобразовать это 3246 для моей функции для работы.

Конечно, я мог бы также изменить функцию как-то и не использовать rtrim в первую очередь

ответ

2

У вас есть несколько вариантов, но, вероятно, ваш самый простой, чтобы удалить все не-цифровых символов.

Не уверен, что ваш get_field делает, но при условии, что он просто получает поле из Ввода, вы можете использовать регулярное выражение так.

$sinput = preg_replace('/[^0-9]/', '', $get_field('fl_area')); 

Также смотрите: PHP regular expression - filter number only

+1

Вы можете использовать '\ d' вместо' [^ 0-9] ' – hindmost

2

rtrim удаляет только символы конца строки, а не середина. Используйте preg_replace:

$sinput = preg_replace('/[,\s]+/g', '', get_field('fl_area')); 
2

Вы можете использовать str_replace(), чтобы удалить все вхождения запятые и пробелы из строки:

$m = str_replace(array(',',' '), '', $m); 

Или даже strtr():

$m = strtr($m, array(',' => '', ' ' => '')); 

Это, вероятно, будет быстрее чем регулярные выкупа. Однако, если количество вызовов функций минимально, разница не будет заметна.

0

Попробуйте это:

str_replace(array(',',' '), '', get_field('fl_area')); 
Смежные вопросы