2016-02-01 2 views
1

Я хотел бы заменить каждое десятичное число для последующего использования в Javascript. так Это мой код:Mutiple preg_match_all Результат foreach

if (preg_match_all("#[0-9]+(\.[0-9]{1,8})#", $operationvalue_new2, $result)) {    
    foreach ($result[0] as $number_element) {                          
    $operationvalue_new2 = preg_replace(
     "#[0-9]+(\.[0-9]{1,8})#", 
     "Number(\\0)", 
     $operationvalue_new2 
    ); 
    #echo $operationvalue_new2; 
    }    
}; 

Вот пример того, что происходит:

//var1812/100*(var1805*var1807*2.688)+(var1808-var1812)*var1806*var1807* 1,2/100)

будут преобразованы в

//var1812/100*(var1805*var1807*Number(Number(2.688)))+(var1808-var1812)*var1806*var1807* оцепенелый эр (число (1,2))/100)

но должно быть

//var1818=var1812/100*(var1805*var1807*Number(2.688))+(var1808-var1812)* var1806 * var1807 * Количество (1.2)/100)

ответ

1

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

<?php 
$subject = "var1812/100*(var1805*var1807*2.688)+(var1808-var1812)*var1806*var1807*1.2/100)"; 
$result = preg_replace('/([0-9]+\.[0-9]{1,8})/s', 'number($1)', $subject); 
echo $result; 
?> 

Результаты в:

var1812/100*(var1805*var1807*number(2.688))+(var1808-var1812)*var1806*var1807*number(1.2)/100) 
+0

Привет, спасибо, но здесь это не работает. Такая же проблема, как и раньше, число() будет заменено два раза, возможно, проблема - это цикл foreach. Кажется, он снова заменяет каждый номер(), так как часто найден десятичный знак ... –

+0

Странный. Результат, отображаемый в моем ответе, был создан на самом деле в соответствующем скрипте. Может быть, кто-то еще может это попробовать. Какую версию вы используете PHP? – hherger

+0

Btw, зачем вам цикл foreach. У моего решения нет. – hherger

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