2015-05-18 2 views
1

У меня есть var со следующим содержанием: +5 cars.Заменить номер в var другим номером

Теперь я хочу взять числовой символ, разделить его на 3 и заменить текущий номер на новый номер. Но я понятия не имею, как подойти к этому. У меня Googled для этого, и это привело меня к preg_replace, но это не может быть так сложно, не так ли?

Теперь очевидно, что 5 не могут быть разделены на 3, поэтому я хочу, чтобы это было round(). Если кто-то знает, как это сделать, я был бы признателен.

+1

Что "что трудно" об использовании 'preg_replace()'? –

+0

Дайте ему попробовать, и если есть какая-либо ошибка, опубликуйте его, чтобы мы могли помочь –

+0

@HonzaHaering существует так много форматов, и я не всегда знаю, что делать после того, как я его добавил. – Vasco

ответ

1

Я хотел бы использовать str_replace (reference) и intval (reference) (и, как вы упомянули round):

$test = '+5 cars'; 
$test = str_replace(intval($test),round($test/3),$test); 
echo $test; 

Would выход:

+2 cars 
+0

Если бы я должен был разместить вывод в новом 'var', должен ли я сделать следующее:' $ newVar = str_replace (intval ($ test), round ($ test/3), $ тест); '? – Vasco

+0

Это сработает, да. – Marc

+0

Я заработал. Спасибо за этот аккуратный однострочный. – Vasco

0
$tempr=(explode(" ",$varname)); 
$num = $tempr[0] ; 
$newnum = $tempr[0]/5; 
$newvar=$newnum." ".$tempr[1]; 

, который будет работать, надеюсь,

1

Просто бросьте его как я nteger и заменить в результате деления:

$s = "+5 cars"; 
$num = intval($s); // or $num = (int) $s; 
$s = str_replace($num, round($num/3), $s); 
echo $s; 
//+2 cars 

Или, используя preg_match_all:

preg_match_all('/\d+/',$s, $matches); 
$s = str_replace($matches[0][0], round($matches[0][0]/3), $s); 
Смежные вопросы